“导入错误:没有名为烧瓶的模块”- 在 vi​​rtualenv 设置中出现 nginx + uWSGI + Flask 问题

vjk*_*005 6 nginx virtualenv uwsgi

我使用一个简单的 hello world 程序在 virtualenv 中的本地主机上运行了 nginx + uWSGI ,但是当我用一个简单的 Flask 应用程序替换 hello world 时出现此错误:

File "./wsgi_configuration_module.py", line 1, in <module>
    from flask import Flask
ImportError: No module named flask
unable to load app mountpoint
Run Code Online (Sandbox Code Playgroud)

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

from flask import Flask
application = Flask(__name__)

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

if __name__ == "__main__":
    application.run()
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

virtualenv 存储在 ~/virtual_env 中,Python 2.7 + nginx + uWSGI + Flask 安装在名为basic.

我试图解决这个问题的事情:

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

其他信息:

  1. 我在 virtualenv 之外有相同的设置。只有当我尝试在 virtualenv 中复制设置时才会出错。

我哪里错了?

小智 5

只需<pythonpath>在 uwsgi 的 app_conf.xml 文件中添加虚拟环境的路径即可。例如:

<pythonpath>/srv/www</pythonpath>
<pythonpath>/home/user/env/lib/python2.6/site-packages</pythonpath>
<module>wsgi_configuration_module</module> 
Run Code Online (Sandbox Code Playgroud)