我有一个计划作为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下运行,但我不明白为什么。有谁知道这是为什么以及如何解决它?
3条答案
按热度按时间s1ag04yj1#
我在SO here上遇到了类似的问题。诀窍是在pylab之前加载matplotlib并调用matplotlib.use('Agg ')。例如
显然,当在cron作业下运行时,没有活动的图形后端(或其他东西,我真的不理解这一部分)。将matplotlib的.use设置为“Agg”可以解决这个问题。
ia2d9nvy2#
如果你碰巧在远程工作或wo screen,请将以下内容添加到你的bashrc:
8fsztsew3#
看起来您在corn作业和Python3.5绘图脚本中遇到的错误导致了一些困难。