首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在python虚拟环境中运行cronjob?

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

Stack Overflow用户
提问于 2019-04-26 10:42:50
回答 3查看 5.3K关注 0票数 8

通常我会通过SSH登录我的EC2实例并运行:

source MYVENV/bin/activate

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

我试着按照这里的步骤做,但没有用。

Cron and virtualenv

代码语言:javascript
运行
复制
SHELL=/bin/bash
*/1 * * * * root source /home/ec2-user/MYVENV/activate && python /home/script.py

这是我目前的设置。

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

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

EN

回答 3

Stack Overflow用户

发布于 2019-06-27 22:37:44

创建shell脚本,如scripts.sh

代码语言:javascript
运行
复制
#!/bin/bash
source /home/user/MYVENV/bin/activate
python /path/to/file/script.py

然后在cron put中

代码语言:javascript
运行
复制
*/1 * * * * bash /path/to/shell/script/scripts.sh

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

票数 13
EN

Stack Overflow用户

发布于 2019-04-26 10:57:13

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

代码语言:javascript
运行
复制
MYENV/bin/python script.py

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

代码语言:javascript
运行
复制
which python

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

代码语言:javascript
运行
复制
*/1 * * * * /home/ec2-user/MYVENV/python /home/script.py
票数 6
EN

Stack Overflow用户

发布于 2019-04-26 10:57:20

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

代码语言:javascript
运行
复制
#!/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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55860101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档