“ImportError:No modules named flask” – 在virtualenv设置中nginx + uWSGI + Flask问题

我用一个简单的hello世界程序在virtualenv内部的本地主机上运行了nginx + uWSGI,但是当我用一个简单的Flask应用程序replacehello world时,出现这个错误:

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

这是烧瓶应用程序(wsgi_configuration_module.py):

 from flask import Flask application = Flask(__name__) @application.route("/") def hello(): return "hello world" if __name__ == "__main__": application.run() 

uWSGIconfiguration(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> 

nginxconfiguration:

 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; } } 

virtualenv存储在〜/ virtual_env与Python 2.7 + nginx + uWSGI + Flask安装在一个名为basic的virtualenv。

我试图解决这个问题:

  1. 在运行uWSGI时将--home (-H)选项设置为我的virtualenv文件夹~/virtual_env

其他信息:

  1. 我在virtualenv之外有相同的设置工作。 只有当我尝试复制virtualenv里面的设置时,情况才会出错。

我哪里错了?

只需在<pythonpath>的app_conf.xml文件<pythonpath>虚拟env的path添加到<pythonpath>即可。 例如:

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

-H / – home / – virtualenv选项不会扩展〜符号。 指定它为绝对path,它应该工作。

这同样适用于configfiles,所以你可以添加

path_to_virtualenv