如何在python虚拟环境中运行cronjob?

时间:2019-04-26 02:42:50

标签: python cron virtualenv

通常,我通过SSH进入我的EC2实例并运行:

source MYVENV/bin/activate

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

中的ENVIRONMENT变量

我尝试按照此处的步骤无效

Cron and virtualenv

SHELL=/bin/bash
*/1 * * * * root source /home/ec2-user/MYVENV/activate && python /home/script.py

这是我上面的当前设置。

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

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

3 个答案:

答案 0 :(得分:0)

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

MYENV/bin/python script.py

找出环境python解释器的目录,将其更改为虚拟env然后运行

which python

在您的情况下,它应该变成

*/1 * * * * /home/ec2-user/MYVENV/python /home/script.py

答案 1 :(得分:0)

您可以创建一个包装器bash脚本来执行Django脚本。请参见下面的示例。

#!/bin/bash -l       // this should pick up your ~/.bash_profile environment variables

cd /path to project dir/   // set it up if your project is not in python path

source /Users/<user>/.virtualenvs/dslab/bin/activate // this activates your environment 

python /home/script.py   // run your script

答案 2 :(得分:0)

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

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

然后放在cron中

*/1 * * * * bash /path/to/shell/script/scripts.sh

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