我使用PyQt5开发了一个简单的GUI,我希望使用远程主机部署工具在PyCharm远程服务器上运行它。下面提供了用于显示空白窗口的简单GUI的源代码。
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 forwarding (-Y)从终端进入此主机并运行GUI (python3 myapp.py),程序工作正常,并出现一个空白窗口。但是,如果我从PyCharm运行程序(在远程主机上使用相同的Python解释器),则会收到以下错误:
qt.qpa.plugin:即使发现了Qt平台插件"xcb“,也无法加载它。 此应用程序无法启动,因为无法初始化Qt平台插件。重新安装应用程序可能会解决此问题。 可用的平台插件有: eglfs、linuxfb、minimal、minimalegl、glx、vnc、wayland、wayland、wayland egl、wayland glx、webgl、xcb。
在PyCharm中,我使用相同的Python解释器在远程主机上运行脚本,该解释器在上面提到的使用ssh -Y的终端成功演示中进行了测试。我还在PyCharm中Settings>Build、Execution、Deployment>Console>Python Console>Environment变量中设置了环境变量。我确保在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提前感谢您的指导。
发布于 2019-05-16 16:10:22
我找到了解决自己问题的办法,但这不一定是理想的。如果程序是从PyCharm运行的,并且设置了上述环境变量,并且我已经使用ssh -Y从终端连接到远程主机,则将显示GUI窗口,不会出现任何错误。如果我从终端终止ssh连接,我将无法从PyCharm执行程序。
这个解决方案目前对我有用,我想发布这个,以防其他人在将来遇到这个问题,但是如果有人能帮助我理解为什么这个解决方案有效,或者如何解决这个问题,而不需要打开一个独立于终端的ssh连接,我会很感激。
https://stackoverflow.com/questions/56158576
复制相似问题