当脚本作为cronjob运行时,python脚本在import语句处停止

2024-10-03 02:36:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我用cron每隔30分钟执行一个python脚本,但它在import语句处停止,我不明白为什么,因为我没有得到任何反馈。在

在我的crontab中我有*/30 * * * * sh exec_script.sh

文件exec_script.sh

cd /home/ziofil/python_scripts
python script_30_mins.py

在python脚本中

^{pr2}$

如果我从终端执行python script_30_minutes.py,一切正常,但是对于cron,执行会在import语句处停止(我读到“scriptis executed”,但没有其他内容)。在

出什么问题了?在

更新:我将import语句放在try/except块中,它记录了异常:“No module named公用事业.utility_1". 我还试图将shell脚本中的PYTHONPATH变量设置为/home/ziofil/python_scripts,但仍然不起作用。在


Tags: 文件pyimport脚本homeshscriptsscript
2条回答

我发现了问题所在。@乌曼纳尔一直都是对的。在@mhawke指出cron的环境与我的终端不同之后,我认为python的二进制文件也可能不同,事实上是:我想要/home/ziofil/anaconda3/bin/python,而cron正在使用/usr/bin/python。在

我将脚本的最后一行修改为/home/ziofil/anaconda3/bin/python script_30_mins.py,一切正常!在

cron使用与终端不同的环境运行进程。可能您已经在终端中设置了PYTHONPATH,但没有在cron环境中设置。如果是这种情况,可以将其添加到shell脚本中:

export PYTHONPATH=/home/ziofil/python_scripts/whatever:$PYTHONPATH
cd /home/ziofil/python_scripts
python script_30_mins.py

相关问题 更多 >