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:
- set the
--home (-H)
option to my virtualenv folder~/virtual_env
while running uWSGI.
Other info:
- 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?
Just add path to your virtual env to
<pythonpath>
in uwsgi's app_conf.xml file. eg: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