uWSGI и Python Virtual En v

Я пытаюсь использовать uWSGI с виртуальным окружением, чтобы использовать на нем трекер ошибок Trac.

Я установил uwsgi для всей системы через pip.

Далее я установил trac в virtualenv

$ 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.

Как я могу это сделать? Спасибо

3 ответа

Решение

Попробуйте добавить это в свой INI-файл:

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

Вам также может понадобиться router_basicauth обрабатывать аутентификацию.

Чтобы использовать активированный virtualenv, вы можете использовать этот фрагмент конфигурации в своем uwsgi.ini:

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

Можете попробовать:

 which uwsgi

Он сообщает, какую команду uwsgi он использует для запуска вашего кода. Убедитесь, что он использует uwsgi от вашего virtualenv, а не от какой-то общесистемной установки.

Другие вопросы по тегам