Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I got nginx + uWSGI running on localhost inside a virtualenv with a simple hello world program, but I get this error when I replace the hello world with a simple 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

Here's the 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 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>

nginx config:

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 stored in ~/virtual_env with Python 2.7 + nginx + uWSGI + Flask installed in a virtualenv called basic.

Things I've tried to solve this:

  1. set the --home (-H) option to my virtualenv folder ~/virtual_env while running uWSGI.

Other info:

  1. I have the same setup working outside of a virtualenv. Things go wrong only when I try to replicate the setup inside of a virtualenv.

Where have I gone wrong?

share|improve this question
add comment

2 Answers

up vote 4 down vote accepted

Just add path to your virtual env to <pythonpath> in uwsgi's app_conf.xml file. eg:

<pythonpath>/srv/www</pythonpath>
<pythonpath>/home/user/env/lib/python2.6/site-packages</pythonpath>
<module>wsgi_configuration_module</module> 
share|improve this answer
add comment

the -H/--home/--virtualenv option does not expand the ~ symbol. Specify it as an absolute path and it should work.

The same apply to configfiles, so you would add

path_to_virtualenv

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.