Python matplotlib作为cron作业运行时出现QxcbConnection错误

时间:2017-01-23 19:38:24

标签: python bash matplotlib cron

我有一个绘图脚本,计划作为cron作业运行,但会抛出错误。该脚本是用Python 3.5编写的,下面给出了一个例子。

import pylab as pl

fig = pl.figure(figsize=(4, 4))
ax = fig.add_supblot(111)

ax.plot(range(10), range(10))

我是通过以下行在bash脚本中调用它:     〜/ anaconda3 / bin / ipython test.py

我的cron报告中出现以下错误:

QXcbConnection: Could not connect to display 
/datadrive/cronjobs/test.sh: line 2:  1459 Aborted (core dumped) ~/anaconda3/bin/python ~/Desktop/test.py

我甚至尝试直接从crontab调用,但遇到了同样的错误。

我已经确认我可以从终端运行脚本。这两项工作都是:

$ ~/anaconda3/bin/ipython ~/Desktop/test.py
$ bash /datadrive/cronjobs/test.sh

似乎matplotlib不喜欢在cron下运行,但我看不出原因。有谁知道这是为什么以及如何解决它?

2 个答案:

答案 0 :(得分:1)

我在SO here上遇到了类似的问题。诀窍是在pylab之前加载matplotlib并调用matplotlib.use(' Agg')。 e.g。

import matplotlib
matplotlib.use('Agg')
import pylab

etc. etc. etc.

显然,当在cron作业下运行时,没有活跃的图形后端(或者某些东西,我真的不理解那部分)。将matplotlib设置为" Agg"解决这个问题。

答案 1 :(得分:0)

如果您正好在远程工作或屏幕上将此添加到您的bashrc:

export QT_QPA_PLATFORM='offscreen'