好几次遇到这个问题,记录一下。
问题
远程调试代码时想要可视化结果,使用matplotlib.pyplot.savefig保存图像时出现RuntimeError: Invalid DISPLAY variable 。
我使用的是VSCode远程链接服务器,在本地调试的时候没有问题。
经过查阅资料得知,matplotlib的默认backend是TkAgg,而FltAgg、GTK、GTKCairo、TkAgg、Wx和WxAgg这几个backend都要求有GUI图形界面,所以在ssh操作的时候会报错。
所以,在远程服务器导入matplotlib包时,将默认的后端转换成不需要GUI界面的后端。(如Agg、Cairo、PS、PDF和SVG)
import matplotlib.pyplot as plt
plt.switch_backend('cairo')