tnk*_*epp 3 python bash cron matplotlib
我有一个绘图脚本,计划作为 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))
Run Code Online (Sandbox Code Playgroud)
我通过以下行在 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
Run Code Online (Sandbox Code Playgroud)
我什至尝试直接从 crontab 调用,但得到了同样的错误。
我已确认可以从终端运行该脚本。这两者都有效:
$ ~/anaconda3/bin/ipython ~/Desktop/test.py
$ bash /datadrive/cronjobs/test.sh
Run Code Online (Sandbox Code Playgroud)
似乎 matplotlib 不喜欢在 cron 下运行,但我不明白为什么。有谁知道这是为什么以及如何解决它?
我在这里遇到了类似的问题。诀窍是在 pylab 之前加载 matplotlib 并调用 matplotlib.use('Agg')。例如
import matplotlib
matplotlib.use('Agg')
import pylab
etc. etc. etc.
Run Code Online (Sandbox Code Playgroud)
显然,当在 cron 作业下运行时,没有活动的图形后端(或者其他什么,我不太明白那部分)。将 matplotlib 的 .use 设置为“Agg”可以解决此问题。
| 归档时间: |
|
| 查看次数: |
1976 次 |
| 最近记录: |