首页 > 解决方案 > 用于 python 脚本的 Cron 无法找到安装在 python 虚拟环境中的库

问题描述

Cron 调用 python 脚本会抛出 Module not found 的错误

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

错误日志

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

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

标签: pythoncronvirtualenvimporterror

解决方案


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 默认在shshell 中运行,而不是bash. 如果您想使用bash,您需要明确指定(例如/bin/bash ./something.sh)或SHELL在您的 crontab 中定义 env var(包括SHELL=/bin/bash在顶部)


推荐阅读