1 vscode+mobaxterm实现服务器图形显示
在服务器上跑深度学习任务是有时候会需要可视化图片,但是服务器一般没有图形显示的功能:
$ xclock
Error: Can't open display:
可以通过 vscode+mobaxterm 使图形显示在本地电脑上。【mobaxterm 自带 X11 forwarding 服务】
1.1 vscode配置
- 在扩展中安装Remote-SSH插件;
- 在vscode的ssh配置文件中添加,ForwardX11、ForwardX11Trusted、ForwardAgent
Host xxxHostName xxx.xxx.xxx.xxxPort 22User xxxForwardX11 yesForwardX11Trusted yesForwardAgent yes
1.2 mobaxterm配置
新建 SSH 连接时添加上述文件配置:
配置好后双击User sessions,出现如下内容配置成功:
在 vscode 中输入命令,输出localhost: xx.x
echo $DISPLAYlocalhost:xx.x
在 vscode 终端中输入:
export DISPLAY=localhost:xx.x
最终即可在本地 VSCode 运行服务器 PyQt 并在本地显示界面。
2 bug 记录
当我在代码中导入 cv2 包时报错:
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/shi/miniconda3/envs/inpainting/lib/python3.10/site-packages/cv2/qt/plugins" even though it was found.
这是由于发生冲突所致,其中导入 cv2
库会替换指向 cv2
安装路径中存在的版本的 QT 平台插件二进制文件 libqxcb.so
,而不是 linux 系统安装的 QT 平台插件路径。这会导致在尝试运行依赖于此的任何应用程序时出现上述错误,例如 (Matplotlib、Rviz launch.py 等)。通过将环境变量 QT_QPA_PLATFORM_PLUGIN_PATH
设置为 linux 根安装目录中存在的版本,强制 QT 平台插件路径恢复为 linux 安装版本,可以解决此问题。
import os
import cv2
# 设置环境变量,指向系统中的 Qt 插件路径,因为导入cv后会冲突
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = '/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms'
但是 cv2.imshow()
方法将不再有效,因为它需要 cv2
安装附带的二进制文件。
vscode+mobaxterm实现服务器图形显示_vscode mobaxterm-CSDN博客
【记录一下】如何在服务器上远程使用pyqt5_学校服务器能使用pyqt5吗-CSDN博客
QT 应用程序因与 cv2 冲突而出错(无法加载 Qt 平台插件 “xcb”) - 知识库 - Stretch Forum --- QT applications error out due to conflict with cv2 (Could not load the Qt platform plugin "xcb") - Knowledge Base - Stretch Forum