如何在Supervisor中使用virtualenvwrapper?

时间:2013-03-04 13:33:31

标签: python deployment virtualenv supervisord virtualenvwrapper

当我开发和测试我的项目时,我曾经使用virtualenvwrapper来管理环境并运行它:

workon myproject
python myproject.py

当然,一旦我使用了正确的virtualenv,我就使用了正确版本的Python,以及其他相应的库来运行我的项目。

现在,我想使用Supervisord管理同一个项目,因为它已准备好部署。问题是在执行脚本之前告诉Supervisord激活正确的virtualenv的正确方法是什么?我是否需要编写一个单独的bash脚本来执行此操作,并在Supervisord配置文件的命令字段中调用该脚本?

3 个答案:

答案 0 :(得分:46)

从命令行使用virtualenv的一种方法是使用位于virtualenv内部的python可执行文件。

对我来说,我在.virtualenvs目录中有我的虚拟环境。例如

/home/ubuntu/.virtualenvs/yourenv/bin/python

无需workon

对于管理龙卷风应用的supervisor.conf我做了:

command=/home/ubuntu/.virtualenvs/myapp/bin/python /usr/share/nginx/www/myapp/application.py --port=%(process_num)s

答案 1 :(得分:6)

将您的virtualenv / bin路径添加到supervisord.conf的{​​{1}}:

environment

答案 2 :(得分:3)

首先,运行

$ workon myproject
$ dirname `which python`
/home/username/.virtualenvs/myproject/bin

添加以下

environment=PATH="/home/username/.virtualenvs/myproject/bin"

到[program:blabla]部分下的相关supervisord.conf。