Windows перенаправляет графический интерфейс PyQt5 из PyCharm

Я разработал простой графический интерфейс с использованием PyQt5, который я хотел бы запустить на удаленном сервере из PyCharm с помощью инструментов развертывания удаленного хоста. Исходный код простого графического интерфейса для отображения пустого окна приведен ниже.

import sys
from PyQt5.QtWidgets import QApplication, QWidget

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QWidget()
    w.resize(250, 150)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()
    sys.exit(app.exec_())

Если я подключусь к этому хосту с терминала с использованием пересылки X11 (-Y) и запустил графический интерфейс (python3 myapp.py), программа будет работать нормально, и появится пустое окно, как и ожидалось. Однако, если я запускаю программу из PyCharm (используя тот же интерпретатор Python на удаленном хосте), я получаю следующую ошибку:

qt.qpa.plugin: не удалось загрузить плагин платформы Qt xcb, даже если он был найден.

Это приложение не удалось запустить, потому что не удалось инициализировать подключаемый модуль платформы Qt. Переустановка приложения может решить проблему.

Доступные плагины платформы: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.

В PyCharm я запускаю сценарий на удаленном хосте с использованием того же интерпретатора Python, который был протестирован в упомянутой выше успешной демонстрации в терминале с использованием ssh -Y. Я также устанавливаю переменные среды в PyCharm в разделе Настройки ›Сборка, Выполнение, Развертывание› Консоль ›Консоль Python› Переменные среды. Я убедился, что переменная среды DISPLAY соответствует переменной DISPLAY при подключении ssh к удаленному хосту (localhost: 10.0). Я попытался изменить плагин платформы на один из рекомендованных (установка переменной среды qt_qpa_platform), и хотя некоторые плагины платформы не вызывают вышеуказанную ошибку, ожидаемое окно не появляется.

Я видел похожие сообщения с этой ошибкой, однако я не думаю, что типичные рекомендуемые решения по переустановке pyqt или перемещению путей к библиотекам применимы к этой ситуации, потому что программа может работать вне PyCharm. Я предполагаю, что должна быть проблема с переменными среды конфигурации запуска PyCharm, но я считаю, что все настраиваю правильно:

DISPLAY=localhost:10.0
PYTHONUNBUFFERED=1
QT_DIR=/usr/lib64/qt-3.3
QTINC=/usr/lib64/qt-3.3/include
QTLIB=/usr/lib64/qt-3.3/lib

Заранее благодарим за любые рекомендации.


person apogalacticon    schedule 15.05.2019    source источник
comment
Используйте команду: export DISPLAY =: 0 в терминале stackoverflow.com/questions/64085911/   -  person George G    schedule 19.02.2021


Ответы (1)


Я нашел способ обойти свой вопрос, но он не обязательно идеален. Если программа запускается из PyCharm с указанными выше переменными среды, установленными и, я подключился к удаленному хосту с помощью ssh -Y из терминала, окно графического интерфейса будет отображаться без ошибок. Если я отключу ssh-соединение с терминала, я не смогу выполнить программу из PyCharm.

Этот обходной путь работает для меня в настоящий момент, и я хотел опубликовать его на случай, если кто-то еще наткнется на этот вопрос в будущем, но я был бы признателен, если бы кто-нибудь мог помочь мне понять, почему этот обходной путь работает или как решить эту проблему без необходимость открытия отдельного ssh-соединения с терминала.

person apogalacticon    schedule 16.05.2019