如何使用 python 虚拟环境运行 cronjob?

sup*_*dee 8 python cron virtualenv

通常我通过 SSH 连接到我的 EC2 实例并运行:

source MYVENV/bin/activate

如何设置我的 cronjob 以激活虚拟环境?我的 Django 脚本需要存储在 ~/.bash_profile 中的环境变量

我尝试按照此处的步骤操作无济于事

Cron 和 virtualenv

SHELL=/bin/bash
*/1 * * * * root source /home/ec2-user/MYVENV/activate && python /home/script.py
Run Code Online (Sandbox Code Playgroud)

这是我上面的当前设置。

我在日志中收到以下错误:

/bin/bash: root: 找不到命令

Pia*_*kaa 13

创建一个shell脚本,例如scripts.sh

#!/bin/bash
source /home/user/MYVENV/bin/activate
python /path/to/file/script.py

Run Code Online (Sandbox Code Playgroud)

然后在 cron 中放入

*/1 * * * * bash /path/to/shell/script/scripts.sh
Run Code Online (Sandbox Code Playgroud)

该脚本将加载您的所有环境变量并在您的环境中从 python 执行


Nic*_*vit 6

您可以直接从您的环境中运行 python 解释器,例如

MYENV/bin/python script.py
Run Code Online (Sandbox Code Playgroud)

找出你的环境python解释器的目录是什么,切换到虚拟环境然后运行

which python
Run Code Online (Sandbox Code Playgroud)

在你的情况下,这应该成为

*/1 * * * * /home/ec2-user/MYVENV/python /home/script.py
Run Code Online (Sandbox Code Playgroud)