我正在尝试使用cron运行python脚本。该脚本在没有问题的情况下从命令行运行,但从cron运行时遇到matplotlib问题。错误如下。
追踪(最近一次呼叫最后一次):
File" /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)
File" /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 return gcf()。gca(** kwargs)
File" /usr/lib/python2.7/dist-packages/matplotlib-1.5.0_818.gfd83789-py2.7-linux-x86_64.egg/matplotlib/pyplot.py" ;,第578行,在gcf中 return figure()
File" /usr/lib/python2.7/dist-packages/matplotlib-1.5.0_818.gfd83789-py2.7-linux-x86_64.egg/matplotlib/pyplot.py" ;,第527行,在图中 ** kwargs)
File" /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)
File" /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(图)
File" /usr/lib/python2.7/dist-packages/matplotlib-1.5.0_818.gfd83789-py2.7-linux-x86_64.egg/matplotlib/backends/backend_qt4agg.py",第76行,在 init 中 FigureCanvasQT。 init (self,figure)
File" /usr/lib/python2.7/dist-packages/matplotlib-1.5.0_818.gfd83789-py2.7-linux-x86_64.egg/matplotlib/backends/backend_qt4.py",第68行,在 init 中 _create_qApp()
File" /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中 引发RuntimeError('无效的DISPLAY变量')
RuntimeError:无效的DISPLAY变量
答案 0 :(得分:2)
当我尝试使用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
希望这有用!