【Linux】解决ssh连接终端无GUI无法显示python图像【服务器】

问题环境:

  • 我个人使用windows系统,通过ssh连接远程linux服务器进行训练,但远程服务器中并未安装GUI,因此使用Python中matplotlib等工具画图时图像并未显示。
  • 经过网上其他教程使用'Agg'调整mobaxterm可显示后,vscode终端还是无法显示。
  • 目的为使下方代码通过ssh在linux下远程运行,在本地能显示图像:
import matplotlib.pyplot as plt

fig = plt.figure()
plt.plot(range(10))
plt.show()

解决方法:

通过网络其他教程得到,将matplotlib的backend替换为'Tkagg',如下:

import matplotlib
matplotlib.use('tkagg') # Must be before importing matplotlib.pyplot or pylab!
import matplotlib.pyplot as plt

fig = plt.figure()
plt.plot(range(10))
plt.show()
  • 在Vscode远程终端运行:程序报错‘Cannot load backend 'TkAgg' which requires the 'tk' interactive framework, as 'headless' is currently running’,图像未显示。将backend切换为'Agg'后尝试,图像亦不显示,但也不报错。
  • 在Mobaxterm运行:成功显示出图像,无报错。

按理来说,vscode和mobaxterm运行方式都是一模一样的终端,一个可以理应通用。于是我想到,是不是程序图像已经可以正常输出了,只是vscode找不到输出的地方,毕竟远程服务器是没有图形界面的。因此我调用查看命令:

echo $DISPLAY

在mobaxterm中显示如下:

在Vscode终端显示为空。据此推断,vscode确实是因为找不到输出位置所造成,因此我把vscode输出参数和mobaxterm改成一样的:

export DISPLAY=:10.0

这下两边保持一致了。

重新在vscode运行,成功显示!

猜你喜欢

转载自blog.csdn.net/weixin_42569673/article/details/111611554