web-dev-qa-db-ja.com

uWSGIおよびpython virtual env

Tracバグトラッカーを使用するために、仮想環境でuWSGIを使用しようとしています。

システム全体のuwsgiをpip経由でインストールしました。

次に、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をインポートできます。

どうやってやるの ?ありがとう

4
Nicolas Appriou

これをiniファイルに追加してみてください:

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

認証を処理するには、router_basicauthも必要になる場合があります。

8
mda

アクティベートされたvirtualenvを使用するには、この構成スニペットをuwsgi.ini

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

試すことができます:

 which uwsgi

コードの実行に使用するuwsgiコマンドを通知します。システム全体のインストールではなく、virtualenvからuwsgiを使用していることを確認してください。

0
Mikko Ohtamaa