Cron作业未与python导入模块一起运行

时间:2018-11-29 22:13:04

标签: python cron libraries

我需要在python脚本上运行cron作业以生成底图。

  1. 脚本本身可以手动运行。

  2. 在程序开始时使用简单的print("Hello")并将其余注释都注释掉,在cron上也可以运行
    */10 * * * * /usr/bin/python3 ~/PythonFiles/TestScript.py > /dev/null 2>&1 >>log.txt

我使用chmod +x使该文件成为可执行文件,并在程序开始时添加了一个shebang(#!/home/usr/anaconda3/bin/python)。我也可以在程序开始时通过打印的消息来监视日志文件中的活动

  1. 当我运行包含模块(urllib.request, datetime, matplotlib, basemap, pygrib, numpy, ...)的“普通”程序时,脚本随后停止将任何内容输出到log.txt

因此,我怀疑这与模块及其位置有关。我检查了一下,发现它们似乎已安装在(.../pkgs, .../conda-meta, .../site-packages的各个位置,等等。)

首先,我怀疑是正确的吗?
其次,如何解决此问题,以便cron知道在哪里可以找到运行该作业的所有库?

非常感谢!

1 个答案:

答案 0 :(得分:0)

我怀疑这与模块位置路径有关。浏览网站并调整对cron的输入后,以下工作有效!

SHELL=/bin/sh
HOME=/home/stephane
PYTHONPATH=/home/stephane/anaconda3/bin/python
PATH=/home/stephane/anaconda3/lib/python3.6/site-packages

*/2 * * * *  /home/stephane/anaconda3/bin/python ~/PythonFiles/TestScript.py >/dev/null 2>&1 >> log.txt

注意:matplotlib似乎需要“将matplotlib导入为mpl; mpl.use('Agg')”才能运行cron。

谢谢大家!