25

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

workon myproject
python myproject.py

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

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

4

3 回答 3

55

从命令行使用 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
于 2013-03-04T14:09:26.377 回答
10

将您的 virtualenv/bin 路径添加到您supervisord.conf的 's environment

[program:myproj-uwsgi]
process_name=myproj-uwsgi
command=/home/myuser/.virtualenvs/myproj/bin/uwsgi
    --chdir /home/myuser/projects/myproj
    -w myproj:app
environment=PATH="/home/myuser/.virtualenvs/myproj/bin:%(ENV_PATH)s"
user=myuser
group=myuser
killasgroup=true
startsecs=5
stopwaitsecs=10
于 2016-02-05T16:21:36.787 回答
5

首轮

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

添加以下内容

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

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

于 2013-09-11T16:51:11.363 回答