python - 用于 python 脚本的 Cron 无法找到安装在 python 虚拟环境中的库
问题描述
Cron 调用 python 脚本会抛出 Module not found 的错误
Python 脚本在 ssh 的 virtualend 中运行,现在尝试为该脚本设置 cron 并添加错误日志
错误日志
ModuleNotFoundError:没有名为“google.cloud”的模块
想要根据新的 python3.6 安装而不是 python2.7 默认路径设置库路径
解决方案
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
)或SHELL
在您的 crontab 中定义 env var(包括SHELL=/bin/bash
在顶部)
推荐阅读
- javascript - React 在 React 中找不到 url
- instagram - 如何通过 API 获取 Instagram 头像?
- list - Java FX:从 Observable List 获取和编辑对象
- jquery - 无法加载 popper.js,包括通过 Requirejs
- php - 使用 json android 更新在线数据库
- css - InputGroup 不占用剩余空间
- java - 使用 @Timed 注释对方法计时 - 与输入大小相关
- big-o - 递归关系 T(n) = 3T(n-1) + n
- react-native - React Native:导航在组件中不起作用
- javascript - 通过ajax调用发送php对象