Windows перенаправляет PyQt5 GUI из PyCharm - PullRequest
1 голос
/ 16 мая 2019

Я разработал простой графический интерфейс с использованием 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 "in" "даже при том, что он был найден.

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

Доступные плагины платформы: eglfs, linuxfb, минимальный, 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

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

1 Ответ

0 голосов
/ 16 мая 2019

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

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

...