uWSGI和python虚拟环境

我试图使用虚拟env与uWSGI为了使用Trac的bug跟踪器。

我已经通过pip安装了系统范围的uwsgi

接下来,我已经在virtualenv中安装了trac

$ virtualenv venv $ . venv/bin/activate $ pip install trac 

然后我写了一个简单的uWSGIconfiguration脚本:

 [uwsgi] master = true processes = 1 socket = localhost:3032 home = /srv/http/trac/venv/ no-site = true gid = www-data uid = www-data env = TRAC_ENV=/srv/http/trac/projects/my_project module = trac.web.main:dispatch_request 

但是当我尝试启动它时,它失败了:

 $ uwsgi --http :8000 --ini /etc/uwsgi/vassals-available/my_project.ini --gid www-data --uid www-data ... Set PythonHome to /srv/http/trac/venv/ ... *** Operational MODE: single process *** ImportError: No module named trac.web.main unable to load app 0 (mountpoint='') (callable not found or import error) 

我认为uWSGI不使用虚拟env。 当虚拟env里面,我可以导入trac.web.main没有一个ImportError。

我怎样才能做到这一点 ? 谢谢

尝试在你的ini文件中添加这个:

 plugins = python virtualenv = /path/to/your/venv 

您可能还需要router_basicauth来处理身份validation。

可以试试:

  which uwsgi 

它告诉它使用哪个uwsgi命令来运行你的代码。 确保它使用的是virtualenv中的uwsgi,而不是来自某个系统的安装。

要使用激活的virtualenv,你可以在你的uwsgi.ini使用这个configuration片段:

 ; If VIRTAL_ENV is set then use its value to specify the virtualenv directory if-env = VIRTUAL_ENV virtualenv = %(_) endif =