Cron for python脚本无法找到安装在python虚拟环境中的库

时间:2019-06-26 18:01:28

标签: python cron virtualenv importerror

Cron调用python脚本时,如果在ssh上的virtualenv中单独执行Python脚本,则会抛出已安装的库找不到模块的错误,并且可以正常工作

Python脚本在ssh的virtualend中运行,现在尝试为该脚本设置cron并添加错误日志

错误日志

ModuleNotFoundError:没有名为“ google.cloud”的模块

想要根据新的python3.6安装设置库路径,而不是python2.7默认路径

1 个答案:

答案 0 :(得分:0)

Cronjobs与典型的bash shell在不同的环境中运行。您需要在运行cronjob之前激活virtualenv。

比方说,您有一个名为'/a/b/main.py'的python文件和一个virtualenv'/ a / b / env'。下面是一个cronjob示例,它每天晚上12点运行脚本(使用crontab -e创建):

0 0 * * * source /a/b/env/bin/activate && python /a/b/main.py

GOTCHA :默认情况下,cron在sh shell中运行,而不在bash中运行。如果要使用bash,则需要明确指定此名称(例如/bin/bash ./something.sh)或在crontab中定义SHELL env var(在顶部包含SHELL=/bin/bash