Pycharm在远程Debug时,X11显示图像,matplotlib会报Matplotlib is currently using agg的错
开发环境:
- 本地环境win10, Pycharm2021
- 使用远程的centos7 服务器上的python解释器
Matplotlib会抛出下面的警告,然后用matplotlib画的图也无法显示了。
1 | UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure. |
在服务器端的配置
首先要检查服务器上的ssh协议是否正常运行,centos7的话是使用 sudo vim /etc/ssh/sshd_config
来编辑ssh的配置文件,加入下面这样的两行。第一行是开启X11Forwarding,第二行是让默认的Display号为11。这个怎么理解呢?以我的使用场景为例,如果该服务器只有自己一个人用ssh的话,当你开启一个MobaXterm,通过ssh连接到服务器后,我本地电脑分配到的Display号默认就是11了。
1 | X11Forwarding yes |
在本地机的配置
下面就是只在自己本地机上操作了,用MobaXterm建立ssh的连接(可以设置自动开启X11 Forwarding,这就体现出了它相比于分别操作Putty和X11 ming的优势)。MobaXterm要设置成下面这样,防止ssh休眠,并开启默认开启X11-Forwarding。
这样设置好后,当用ssh连接后,会出现下面的信息:
让MobaXterm在后台运行着,这样用Pycharm才可以正常在本地显示figure。记得在Mobaxterm中键入 echo $DISPLAY
来看本地的号,该号要与下面Pycharm中运行程序的配置文件中的设置的一致,如下图所示。若是这两个号不一致,那么你就会得到本文最开始时的Matplotlib警告信息。
搞定!