【发布时间】:2015-05-26 20:57:57
【问题描述】:
在我的台式电脑上运行使用matplotlib 库的代码时,我使用以下行没有问题:
import matplotlib.pyplot as plt
远远低于代码,这是我实际使用绘图功能的地方。
如果我在服务器中运行代码,但它只有在我导入matplotlib 之前 才能工作,并强制它使用Agg 后端。即,我必须在代码的开头添加以下几行:
import matplotlib
# Force matplotlib to not use any Xwindows backend.
matplotlib.use('Agg')
(请参阅this answer,其中对此进行了解释)。否则代码会因TclError: no display name and no $DISPLAY environment variable 而崩溃(例如参见this question)。
问题是:为什么我需要这样做?该解决方案完美运行,但我不知道为什么我不必在我的台式电脑上执行此操作,但当代码在服务器中运行时我绝对必须这样做。
【问题讨论】:
-
你总是可以设置 $DISPLAY
export DISPLAY=:0我认为 ... -
我并不是真的在寻找另一种方法来解决这个问题,因为目前的工作效果很好。我想要的是了解它为什么起作用。顺便说一句,我也不太了解您的 cmmt 中的替代解决方案:)
-
DISPLAY被 UNIX/Linux 上的 X-Windows 系统使用,这不是 matplotlib 或 Python 的错,只是那个平台上的事情。原因是灵活性,可以根据环境变量选择不同的显示器。 -
您确定您的家用 PC 上没有默认设置 DISPLAY 吗?它通常在 Linux 中设置,因为 GUI 使用它。
-
你看看你的Linux系统上是否设置了它?使用
set或env命令。它可能在其中一个启动文件中。
标签: python matplotlib x11