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

p5cysglq  于 2023-06-30  发布在  Python
关注(0)|答案(3)|浏览(122)

我有一个计划作为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下运行,但我不明白为什么。有谁知道这是为什么以及如何解决它?

s1ag04yj

s1ag04yj1#

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

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

etc. etc. etc.

显然,当在cron作业下运行时,没有活动的图形后端(或其他东西,我真的不理解这一部分)。将matplotlib的.use设置为“Agg”可以解决这个问题。

ia2d9nvy

ia2d9nvy2#

如果你碰巧在远程工作或wo screen,请将以下内容添加到你的bashrc:

export QT_QPA_PLATFORM='offscreen'
8fsztsew

8fsztsew3#

看起来您在corn作业和Python3.5绘图脚本中遇到的错误导致了一些困难。

相关问题