使用 cron 运行 python 脚本,matplotlib 错误

Posted

技术标签:

【中文标题】使用 cron 运行 python 脚本,matplotlib 错误【英文标题】:Running a python script with cron, matplotlib error 【发布时间】:2016-04-20 11:10:25 【问题描述】:

我正在尝试使用 cron 运行 python 脚本。该脚本从命令行运行没有问题,但从 cron 运行时 matplotlib 出现问题。错误如下。

Traceback(最近一次调用最后一次):

文件“/home/ubuntu/python/spread.py”,第 154 行,在 plot_spread(lat, lon, vals, mean, maxs, mins, stdp, stdm, ens_members)

文件“/home/ubuntu/python/spread.py”,第 81 行,在 plot_spread plt.fill_between(x, maxs, stdp, color='r', alpha=0.2)

文件“/usr/lib/python2.7/dist-packages/matplotlib-1.5.0_818.gfd83789-py2.7-linux-x86_64.egg/matplotlib/pyplot.py”,第 2785 行,在 fill_between ax = gca()

文件“/usr/lib/python2.7/dist-packages/matplotlib-1.5.0_818.gfd83789-py2.7-linux-x86_64.egg/matplotlib/pyplot.py”,第 928 行,在 gca 返回 gcf().gca(**kwargs)

文件“/usr/lib/python2.7/dist-packages/matplotlib-1.5.0_818.gfd83789-py2.7-linux-x86_64.egg/matplotlib/pyplot.py”,第 578 行,在 gcf 返回图()

文件“/usr/lib/python2.7/dist-packages/matplotlib-1.5.0_818.gfd83789-py2.7-linux-x86_64.egg/matplotlib/pyplot.py”,第527行,如图 **kwargs)

文件“/usr/lib/python2.7/dist-packages/matplotlib-1.5.0_818.gfd83789-py2.7-linux-x86_64.egg/matplotlib/backends/backend_qt4agg.py”,第 46 行,在 new_figure_manager return new_figure_manager_given_figure(num, thisFig)

文件“/usr/lib/python2.7/dist-packages/matplotlib-1.5.0_818.gfd83789-py2.7-linux-x86_64.egg/matplotlib/backends/backend_qt4agg.py”,第 53 行,在 new_figure_manager_given_figure canvas = FigureCanvasQTAgg(图)

文件“/usr/lib/python2.7/dist-packages/matplotlib-1.5.0_818.gfd83789-py2.7-linux-x86_64.egg/matplotlib/backends/backend_qt4agg.py”,第 76 行,在 初始化 FigureCanvasQT.init(self, figure)

文件“/usr/lib/python2.7/dist-packages/matplotlib-1.5.0_818.gfd83789-py2.7-linux-x86_64.egg/matplotlib/backends/backend_qt4.py”,第 68 行,在 初始化 _create_qApp()

文件“/usr/lib/python2.7/dist-packages/matplotlib-1.5.0_818.gfd83789-py2.7-linux-x86_64.egg/matplotlib/backends/backend_qt5.py”,第 138 行,在 _create_qApp raise RuntimeError('无效的 DISPLAY 变量')

RuntimeError: 无效的 DISPLAY 变量

【问题讨论】:

***.com/questions/2801882/… 可能有帮助 完美!解决了这个问题。谢谢 【参考方案1】:

当我尝试使用 cron 在 python 中导入 matplotlib.pyplot 时遇到了类似的错误。您可以强制 matplotlib 不使用任何 Xwindows 后端。这样做:

import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt

这些链接也可能有帮助:

Generating a PNG with matplotlib when DISPLAY is undefined

Generating matplotlib graphs without a running X server

希望这有帮助!

【讨论】:

以上是关于使用 cron 运行 python 脚本,matplotlib 错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 cron 每 5 分钟后无法运行 python 脚本

Python 脚本在 docker 容器中找不到使用 CRON 运行的 ENV 变量

无法使用cron每分钟执行一次python 3脚本

Python 脚本作为 AWS S3 存储桶上的 Cron

Cron作业无法执行写入文本文件的python脚本

节点 cron 未在 EC2 上运行