Python

uWSGI 和 python 虛擬環境

  • February 6, 2015

我正在嘗試將 uWSGI 與虛擬環境一起使用,以便在其上使用 Trac 錯誤跟踪器。

我已經通過 pip 安裝了系統範圍的 uwsgi。

接下來,我在 virtualenv 中安裝了 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 沒有使用虛擬環境。在虛擬環境中,我可以在沒有 ImportError 的情況下導入 trac.web.main。

我怎樣才能做到這一點 ?謝謝

嘗試將其添加到您的 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 =

引用自:https://serverfault.com/questions/591703