私は現在、私の最初の本当のpython flask=プロジェクトを開発していて、ビルドサーバーをセットアップして、チェックイン。
Uwsgiを使用してアプリケーションを起動する起動スクリプトを設定しましたが、この部分は正常に機能しています。最近virtualenv
の使用を開始しました。これにより、インストールされたパッケージがプロジェクトのprojectname\flask\Lib\site-packages
。
Webサーバーとしてnginx
を使用していますが、構成は次のようになります。
location / { try_files $uri @graderbuild; }
location @graderbuild {
include uwsgi_params;
uwsgi_param UWSGI_CHDIR /usr/local/grader/build;
uwsgi_param UWSGI_PYHOME /usr/local/grader/build;
uwsgi_pass 127.0.0.1:3031;
}
私はこれを使用してuwsgi
を開始しています:
exec /usr/local/bin/uwsgi --master --socket 127.0.0.1:3031
--wsgi-file restserver.py --callable app --processes 4 --die-on-term
--threads 2 >> /var/log/grader-build.log 2>&1
今私はそれを正しくやっているかどうかを知っている場所に...現在、フォルダ全体をビルドサーバーに展開しています。ビルドを機能させるためだけにglobal pythonモジュールをインストールしたくありません。
現在私が得るエラーは次のとおりです。
ImportError: No module named flask_wtf
正しい場合は、virtualenv
サイトパッケージを使用するようにセットアップを構成するにはどうすればよいですか?私の優先する場所は、startup
構成ではなく、nginx
スクリプト内です。
つかいます -H
= virtualenvをpythonパスに設定します。
uwsgi -H /path/to/your/virtualenv
http://uwsgi-docs.readthedocs.org/en/latest/Options.html#virtualenv
有効化されたvirtualenvを使用するには、この設定スニペットをuwsgi.ini
:
; If VIRTAL_ENV is set then use its value to specify the virtualenv directory
if-env = VIRTUAL_ENV
virtualenv = %(_)
endif =
User995394 pointed outとして、uWSGIが既存の仮想環境を使用するように指示する方法があります。ただし、uWSGIオプションをvirtualenv = /full/path/to/my/virtualenv
の形式(INI config)から)で渡すと、ImportError: No module named site
について文句を言います。 virtualenvはvirtualenv = my_virtualenv_name
だけを渡します(つまり、パスは相対です)。
私はuWSGI 2.0を使用しています。
数か月前にこの問題を抱えていましたが、nginx、Linuxのupstartで自動的に起動するuwsgiなどのデモ構成の完全な例があります。
他の人の答えは役に立たず、virtualenvへのパスをuwsgi.ini構成ファイルに追加しました。エラーが消えました。
pythonpath = /path-to-virtualenv/project/lib/python2.7/site-packages