通常,我通过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:根:找不到命令
答案 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执行