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

标签 python bash cron

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

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

文件 exec_script.sh

cd /home/ziofil/python_scripts
python script_30_mins.py

在我的python脚本中

import logging
logging.basicConfig(filename="explicit_log.txt",level=logging.DEBUG)
logger = logging.getLogger(__name__)

logger.debug("script is executed")

# in the python_scripts folder there is a subfolder utilities/ that
# contains utility_1.py, were I define the class Utility
from utilities.utility_1 import Utility
logger.debug("Utility loaded")

utility = Utility()
logger.debug("object creation")

utility.do_your_thing()
logger.debug("done its thing")

如果我从终端执行 python script_30_minutes.py,一切正常,但使用 cron 时,执行会在 import 语句处停止(我读到“脚本已执行",但注意其他)。

出了什么问题?

更新:我将 import 语句放在 try/except block 中,它记录了异常:“No module named utilities.utility_1”。我也尝试将shell脚本中的PYTHONPATH变量设置为/home/ziofil/python_scripts,但还是不行。

最佳答案

我发现了问题所在。 @UweMannl 一直都是对的。在 @mhawke 指出 cron 的环境与我的终端环境不同之后,我想也许 python 二进制文件也可能不同,实际上它是:我想要 /home/ziofil/anaconda3/bin/python 和 cron 使用 /usr/bin/python

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

关于当脚本作为 cronjob 运行时,python 脚本在 import 语句处停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48597496/

相关文章:

python - 如何从无限生成器中干净地捕获?

bash - 解析顺序和扩展顺序之间的区别

linux - 为文件中的每个单词添加引号

php - 使用 php7 版本在 cpanel 上运行 cron 作业

python - 大文件读取问题

python - 在 python 中使用 scipy 解决有界非线性最小化

Python Flask 只运行一次代码

bash - 在 gradle exec 任务中使用 bash glob

php - Magento Cron 作业/bin/bash : php7: command not found

python - 在django服务器上的特殊时间运行脚本