(最新+详细+Pycharm远程调试GUI程序)解决qt.qpa.xcb: could not connect to display问题
- 出现原因
- 解决方法
- 步骤
- 下载MobaXTerm
- 连接服务器
- 安装Xorg和打开X11-forwarding
- 附录
- 设置共享目录
- 修改环境
出现原因
在ubuntu服务器上运行cv.imshow()方法时就会报以下错误
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/root/anaconda3/lib/python3.8/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: xcb, eglfs, minimal, minimalegl, offscreen, vnc
解决方法
因为用的是云服务器,我也不能去他那里外接个显示器,而且我也是没有装图形化界面的,如果有图形化界面可以使用vnc连接就解决了,我不想装图形化界面就打算使用MobaXTerm来使远程服务器的显示内容显示到本地windows上。
步骤
下载MobaXTerm
MobaXTerm内置了X server,在服务器上的图形化应用可以在本地轻松展示。MobaXTerm下载地址
这里我们下载Portable版本这个免安装,下载下来就一个exe文件。
连接服务器
打开下载的MobaXTerm,右上角Session->SSH,Remote host输入服务器地址,勾选Specify username输入连接的用户名,Port输入端口号,然后在下面Advanced Settings高级设置那里勾选X11-forwarding,就是需要X11-forwarding去转发服务器显示内容。
安装Xorg和打开X11-forwarding
连接好服务器后可以发现我们的X11-forwarding服务是没有打开的
首先我们先安装Xorg,Xorg是X11的实现,负责连接到Xserver进行输入和输出。
sudo apt-get install xorg
然后我们打开X11-forwarding服务,在命令行输入
vi /etc/ssh/sshd_config
修改两个配置项
X11Forwarding yes
X11UseLocalhost no
之后重启ssh服务
service ssh restart
重新连接服务器后可以发现支持X11-forwarding了
在命令行输入xclock测试能否传输GUI界面到本地
xclock
成功!
附录
如何在Pycharm上面远程调试GUI程序呢?
设置共享目录
可参考这篇文章
PyCharm远程开发
修改环境
在设置好远程开发后修改环境信息
在PyCharm中打开Run->Edit Configurations,当然也可以在右上角运行按钮旁边直接点。然后在Environment variables添加DISPLAY变量。
变量值是从服务器获取的。在命令行输入echo $DISPLAY就行。
echo $DISPLAY