我正在尝试将 uWSGI 与虚拟环境一起使用,以便在其上使用 Trac 错误跟踪器。
我已经通过 pip 安装了系统范围的 uwsgi。
接下来,我在虚拟环境中安装了 trac
$ virtualenv venv
$ . venv/bin/activate
$ pip install trac
然后我编写了一个简单的 uWSGI 配置脚本:
[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 没有使用虚拟环境。在虚拟环境中,我可以导入 trac.web.main 而不会出现 ImportError。
我该怎么做?谢谢
答案1
尝试在您的 ini 文件中添加此项:
plugins = python
virtualenv = /path/to/your/venv
您可能还需要router_basicauth
处理身份验证。
答案2
要使用激活的虚拟环境,您可以在您的配置片段中使用此配置片段uwsgi.ini
:
; If VIRTAL_ENV is set then use its value to specify the virtualenv directory
if-env = VIRTUAL_ENV
virtualenv = %(_)
endif =
答案3
您可以尝试:
which uwsgi
它告诉您使用哪个 uwsgi 命令来运行您的代码。确保它使用的是uwsgi
来自您的虚拟环境的命令,而不是来自某个系统范围的安装的命令。