Cron调用python脚本时,如果在ssh上的virtualenv中单独执行Python脚本,则会抛出已安装的库找不到模块的错误,并且可以正常工作
Python脚本在ssh的virtualend中运行,现在尝试为该脚本设置cron并添加错误日志
错误日志
ModuleNotFoundError:没有名为“ google.cloud”的模块
想要根据新的python3.6安装设置库路径,而不是python2.7默认路径
答案 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
)>