uWSGI 和 python 虚拟环境

uWSGI 和 python 虚拟环境

我正在尝试将 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来自您的虚拟环境的命令,而不是来自某个系统范围的安装的命令。

相关内容