首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何为crontab设置virtualenv?

如何为crontab设置virtualenv?
EN

Stack Overflow用户
提问于 2010-11-11 09:22:27
回答 3查看 47.7K关注 0票数 79

我想设置一个crontab来运行Python脚本。

假设脚本是这样的:

代码语言:javascript
复制
#!/usr/bin/python
print "hello world"

有没有办法指定一个virtualenv让Python脚本在其中运行?简而言之,我只会这么做:

代码语言:javascript
复制
~$ workon myenv

我可以在crontab中做些等效的事情来激活virtualenv吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-11 09:28:19

如果您使用的是"workon“,那么您实际上使用的是"virtualenv wrapper”,它是位于virtualenv之上的另一个抽象层。可以通过cd进入您的virtualenv根目录并运行以下命令来单独激活virtualenv:

代码语言:javascript
复制
source bin/activate

workon是由virtualenv wrapper提供的命令,而不是virtualenv,它做一些普通的virtualenv不一定需要的额外工作。您真正需要做的就是在您的virtualenv根目录中查找bin/activate文件,以“激活”一个virtualenv。

您可以将crontab设置为调用执行以下操作的bash脚本:

代码语言:javascript
复制
#! /bin/bash    
cd my/virtual/env/root/dir
source bin/activate

# virtualenv is now active, which means your PATH has been modified.
# Don't try to run python from /usr/bin/python, just run "python" and
# let the PATH figure out which version to run (based on what your
# virtualenv has configured).

python myScript.py
票数 84
EN

Stack Overflow用户

发布于 2012-10-12 05:00:21

另一个对我很有效的解决方案...

代码语言:javascript
复制
0    9    *    *    *    /path/to/virtenv/bin/python /path/to/cron_script.py

我更喜欢直接从virtualenv使用python…

票数 117
EN

Stack Overflow用户

发布于 2021-09-02 22:34:24

我对workon不是很确定,但对于venv来说,这是非常简单的。唯一要记住的是,crontab在默认情况下使用sh,而不是bash,因此您需要使用.命令而不是source

如果您有一个~/myproject/main.py文件,下面是一些示例

代码语言:javascript
复制
* * * * * cd ~/myproject && . .venv/bin/activate && python main.py > /tmp/out1 2>&1

您也可以直接调用venv目录中python的具体路径,这样就不需要调用activate了。

代码语言:javascript
复制
* * * * * ~/myproject/.venv/bin/python ~/myproject/main.py > /tmp/out2 2>&1

这样做的缺点是您需要指定项目路径两次,这使得维护变得更加棘手。为了避免这种情况,您可以使用shell变量,以便只指定一次项目路径:

代码语言:javascript
复制
* * * * * project_dir=~/myproject ; $project_dir/.venv/bin/python $project_dir/main.py > /tmp/out3 2>&1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4150671

复制
相关文章

相似问题

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