[英]How do I run a cronjob with a python virtual environment?
通常,我通过SSH进入我的EC2实例并运行:
source MYVENV/bin/activate
如何设置cronjob激活虚拟环境? 我的Django脚本需要存储在〜/ .bash_profile中的ENVIRONMENT变量
我尝试按照此处的步骤进行,但无济于事
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.