python - 仅从控制台运行时 Matplotlib pdf 保存失败

标签 python ssh console matplotlib

我正在使用 matplotlib.backends.backend_pdf 将一些 matplotlib 绘图渲染为 PDF。当我从我的 (Linux) 计算机运行它时它工作正常,但如果我从外部位置 ssh 到计算机并运行代码,它会失败并显示以下错误消息。

  File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 343, in figure
    **kwargs)
  File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 80, in new_figure_manager
    window = Tk.Tk()
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1688, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable

我的代码中失败的行是fig = matplotlib.pyplot.figure(figsize=(11.5,14.8))。

我认为这与尝试找到要渲染绘图的显示器有关,但我的代码实际上从未显示它们。它仅保存为 PDF。有什么方法可以解决这个问题以使代码正常运行吗?

最佳答案

您的代码可能不会显示绘图,但它仍然使用需要显示的交互式后端。

您可以ssh -Y user@host 并获取 X 连接,或者根据 ngurenyaga 提供的链接中的建议,编辑代码以使用非交互式后端:

matplotlib.use("Agg")

关于python - 仅从控制台运行时 Matplotlib pdf 保存失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12837199/

相关文章:

python - 在 Django 中编辑之前检查记录所有者

amazon-web-services - 如何在同一子网上使用第二个弹性网络接口(interface)

linux - 附加到正在运行的进程的输出

linux - 如何在脚本中的另一台服务器上运行 shell 脚本?

swift - 如何使用 Swift 在控制台应用程序上进行非阻塞键盘输入?

c++ - Linux - 放弃键盘输入

python - 如何在web2py中创建用户定义的类

Python 使用 M2Crypto 通过 S/MIME 签署消息

python - 正则表达式:匹配所有内容,直到 `:` 或 `(`

javascript - 使用控制台查看对象的可用方法?