问题出现的场景
代码在Linux服务器上运行,需要绘图以辅助调试、验证正确性等;开发机是Windows10系统,用VSCode的Remote Development或者PyCharm。希望在本地能交互的显示matplotlib的绘图,而不是存储为图片。
配置步骤
1. Linux服务器端
通常是Linux服务器管理员来配置。
确保安装配置了X11相关软件包:
sudo apt-get install xorg
sudo apt-get install openbox
确保ssh服务配置中开启了X11转发:
vim /etc/ssh/sshd_config
包含类似如下内容:
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
(ubuntu16.04的话,默认安装后是配置好的,不用改)
2. 本地开发机
Win10的话,用Xmimg+putty(或其他能支持X11转发接受功能的ssh客户端)。
Mac的话,用XQuarts。
Windows开发机
以Win10为例,装好Xmimg和putty后,开启Xlaunch,然后开putty,并勾选:
Connection-> SSH -> X11 Forwarding
putty连接OK后,查看DISPLAY环境变量的值:
echo $DISPLAY
例如我的是
localhost:19.0
则在VSCode远程连接的终端中,临时指定DISPLAY的值后,再执行画图的python程序,本地就可以通过Xmimg显示了:
export DISPLAY=localhost:19.0
也可以在putty窗口中执行执行程序,因为DISPLAY已经有正确的值了。
Linux桌面系统
ssh时指定"-X"参数即可:
ssh -X your_name@some_ip
其他
PyCharm远程调试显示图片
- PyCharm需要专业版,免费版不支持远程调试,更不可能远程调试时显示图片
- Linux远程server配置好ssh、装好xorg和openbox之后,PyCharm调试,自动可以显示图片