我试图使用虚拟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 =