“ImportError: Nenhum módulo chamado flask” - Problema com nginx + uWSGI + Flask em uma configuração virtualenv

5

Eu tenho nginx + uWSGI rodando em localhost dentro de um virtualenv com um simples programa hello world, mas recebo este erro quando substituo o hello world por um simples aplicativo Flask:

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

Aqui está o aplicativo do frasco (wsgi_configuration_module.py):

from flask import Flask
application = Flask(__name__)

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

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

uWSGI config (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>

configuração 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;
    }
}

virtualenv armazenado em ~ / virtual_env com o Python 2.7 + nginx + uWSGI + Flask instalado em um virtualenv chamado basic .

Coisas que tentei resolver:

  1. defina a opção --home (-H) para minha pasta virtualenv ~/virtual_env durante a execução do uWSGI.

Outras informações:

  1. Eu tenho a mesma configuração trabalhando fora de um virtualenv. As coisas dão errado apenas quando tento replicar a configuração dentro de um virtualenv.

Onde eu errei?

    
por vjk2005 30.11.2011 / 10:35

2 respostas

4

Basta adicionar o caminho ao seu env virtual para <pythonpath> no arquivo app_conf.xml do uwsgi. por exemplo:

<pythonpath>/srv/www</pythonpath>
<pythonpath>/home/user/env/lib/python2.6/site-packages</pythonpath>
<module>wsgi_configuration_module</module> 
    
por 01.12.2011 / 05:38
3

A opção -H / - home / - virtualenv não expande o símbolo ~. Especifique-o como um caminho absoluto e ele deve funcionar.

O mesmo se aplica aos arquivos de configuração, então você deve adicionar

caminho_para_virtualenv

    
por 30.11.2011 / 17:23