web-dev-qa-db-ja.com

「ImportError:フラスコという名前のモジュールはありません」-nginx + uWSGI + Flaskの問題

Localhost virtualenv内で単純なhello worldプログラムを使用してnginx + uWSGIを実行しましたが、helloworldを単純なFlask app :

_File "./wsgi_configuration_module.py", line 1, in <module>
    from flask import Flask
ImportError: No module named flask
unable to load app mountpoint
_

これがflask app(wsgi_configuration_module.py)です:

_from flask import Flask
application = Flask(__name__)

@application.route("/")
def hello():
    return "hello world"

if __name__ == "__main__":
    application.run()
_

uWSGI構成(app_conf.xml):

_<uwsgi>
    <socket>127.0.0.1:9001</socket>
    <chdir>/srv/www/labs/application</chdir>
    <pythonpath>/srv/www</pythonpath>
    <module>wsgi_configuration_module</module>
    <callable>application</callable>
    <no-site>true</no-site>
</uwsgi>
_

nginx設定:

_server {
    listen   80;
    server_name localhost;
    access_log /srv/www/labs/logs/access.log;
    error_log /srv/www/labs/logs/error.log;

    location / {
        include        uwsgi_params;
        uwsgi_pass     127.0.0.1:9001;
    }

    location /static {
        root   /srv/www/labs/public_html/static/;
        index  index.html index.htm;
    }
}
_

〜/ virtual_envに保存されたvirtualenv Python 2.7 + nginx + uWSGI + Flask basicという名前のvirtualenvにインストールされています。

私がこれを解決しようとしたこと:

  1. uWSGIの実行中に、--home (-H)オプションをvirtualenvフォルダー_~/virtual_env_に設定します。

他の情報:

  1. 私はvirtualenvの外で同じセットアップを行っています。 virtualenv内でセットアップを複製しようとしたときにのみ、問題が発生します。

どこが間違っているのですか?

5
vjk2005

Uwsgiのapp_conf.xmlファイルの<pythonpath>に仮想環境へのパスを追加するだけです。例えば:

<pythonpath>/srv/www</pythonpath>
<pythonpath>/home/user/env/lib/python2.6/site-packages</pythonpath>
<module>wsgi_configuration_module</module> 
4
sjn

-H/-home/-virtualenvオプションは、〜記号を展開しません。絶対パスとして指定すると、機能するはずです。

同じことがconfigfilesにも当てはまるので、あなたは追加します

path_to_virtualenv

3
roberto