Sign up ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I'm having a lot of trouble to deploy a Flask application on a CentOS 6 server. I know a few other questions have been asked concerning this problem, but I haven't succeeded yet.


Default Python is Python 2.6.6
nginx version is 1.0.15
uWSGI version is 1.2.5
My virtualenv folder is /home/me/dev/.venv
My virtualenv Python version is 2.7.3 (I want to run Python 2.7.3 with uWSGI)
My Python file is /home/me/dev/
My files, modules, classes, etc. are under /home/me/dev/contacts

What I tried

Here is the relevant part of the nginx.conf :

server {
listen 80;
    access_log off;
    # ...

    location / {
        include uwsgi_params;

Here is the full :

from contacts import app

if __name__ == "__main__":

As per the documentation, I tried to run the following command :

uwsgi -H .venv/ -s -w runserver:app

I have however two problems :
- uWSGI still runs on the Python 2.6.6 version
- I have a 'import site' failed error
- I have a ImportError: No module named flask error, which is most likely linked to the precedent error

I also tried the following command, from the Quickstart tutorial on uWSGI official website :

uwsgi --socket --file --callable app --processes 2 -H .venv/

But I have the same exact problems as before.

I am completely lost at the moment, I have tried other commands, but I can't figure out what else I should do.

What could I do to run uWSGI from my virtual environment?

Edit : Ok, so after a few other tries, I've managed to run my application by installing uWSGI in my virtualenv and running it from the activated environment (commands for those who may stumble on my posts and find it an acceptable solution) :

$ . .venv/bin/activate
$ which uwsgi
$ uwsgi -s :3031 -w runserver:app -H .venv/

Should I always run uwsgi from the virtual environment? Isn't there any cleaner way to do it?

share|improve this question

1 Answer 1

I have always install uwsgi in my virtualenv. It is much cleaner that way and if you run multiple apps you can install uwsgi in multiple ways.

I think you are stumbling above by not setting your python path correctly so it has no idea where flask is installed since it isn't searching for it in your virtualenv. Same with your site file.

share|improve this answer
This is also my understanding, however I thought specifying a HOME directory would therefore teach uWSGI to find both my installed modules and my Python interpreter, which is obviously not the case. – Vincent Savard Aug 22 '12 at 14:16
it isn't a recursive search down the tree – Mike Aug 22 '12 at 14:19

Your Answer


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.