繁体   English   中英

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

[英]How do I run a cronjob with a python virtual environment?

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

source MYVENV/bin/activate

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

我尝试按照此处的步骤进行,但无济于事

Cron和virtualenv

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

这是我上面的当前设置。

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

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

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

MYENV/bin/python script.py

找出您的环境python解释器的目录是什么,更改为虚拟env然后运行

which python

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

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

您可以创建一个包装器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

创建一个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执行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM