title: Django, Virtualenv, nginx + uwsgi import module wsgi error
body: <p>Im trying to setup my django project on a staging server with nginx, virtualenv, and uwsgi, but I keep getting an import module wsgi error.</p>
  
  <p>If theres a community I can find an answer is here... Thank you all in advance.</p>
  
  <p>This are my configuration files:</p>
  
  <p>uwsgi.py on my django project:</p>
  
  <pre><code>import os
  import sys 
  import site
  
  site.addsitedir(os.path.join(os.environ['WORKON_HOME'],'project/lib/python2.6/site-packages'))
  sys.path.append(os.path.abspath(os.path.dirname(__file__)))
  sys.path.append(os.path.join(os.path.realpath(os.path.dirname(__file__)), '../../../'))
  sys.path.append(os.path.join(os.path.realpath(os.path.dirname(__file__)), '../../'))
  
  os.environ['DJANGO_SETTINGS_MODULE'] = 'project.configs.staging.settings'
  
  import django.core.handlers.wsgi
  application = django.core.handlers.wsgi.WSGIHandler()
  </code></pre>
  
  <p>Nginx Configuration</p>
  
  <pre><code># nginx configuration for project.maumercado.com
  
  server {
      server_name project.maumercado.com;
      access_log /home/ubuntu/logs/project/nginx/access.log;
      error_log /home/ubuntu/logs/project/nginx/error.log;
  
      location / {
              uwsgi_pass unix:/tmp/uwsgi.sock;
              include /etc/nginx/uwsgi_params;
      }
  
      location /static {
              root /home/ubuntu/django-projects/project/project/media;
      }
      location /media {
              root /home/ubuntu/django-projects/project/project/media;
      }
  }
  </code></pre>
  
  <p>and, my uwsgi.conf</p>
  
  <pre><code># file: /etc/init/uwsgi.conf 
  description "uWSGI starter"
  
  start on (local-filesystems and runlevel [2345])
  stop on runlevel [016]
  
  respawn
  
  # home - is the path to our virtualenv directory
  # pythonpath - the path to our django application
  # module - the wsgi handler python script
  
  exec /home/ubuntu/ve/project/bin/uwsgi \
  --uid www-data \
  --pythonpath /home/ubuntu/django-projects/project/project/configs/staging/ \
  --socket /tmp/uwsgi.sock \
  --chmod-socket \
  --module wsgi \
  --logdate \
  --optimize 2 \
  --processes 2 \
  --master \
  --logto /home/ubuntu/logs/project/uwsgi.log
  </code></pre>
  
  <p>Nginx logs does not state anything besides a 500 in access.log, so heres the uwsgi.log:</p>
  
  <pre><code>Mon Feb  6 13:58:23 2012 - *** Starting uWSGI 1.0.2.1 (32bit) on [Mon Feb  6 13:58:23 2012] ***
  Mon Feb  6 13:58:23 2012 - compiled with version: 4.4.5 on 06 February 2012 12:32:36
  Mon Feb  6 13:58:23 2012 - current working directory: /
  Mon Feb  6 13:58:23 2012 - detected binary path: /home/ubuntu/ve/project/bin/uwsgi
  Mon Feb  6 13:58:23 2012 - setuid() to 1000
  Mon Feb  6 13:58:23 2012 - your memory page size is 4096 bytes
  Mon Feb  6 13:58:23 2012 - chmod() socket to 666 for lazy and brave users
  Mon Feb  6 13:58:23 2012 - uwsgi socket 0 bound to UNIX address /tmp/uwsgi.sock fd 3
  Mon Feb  6 13:58:23 2012 - Python version: 2.6.6 (r266:84292, Sep 15 2010, 16:02:57)  [GCC 4.4.5]
  Mon Feb  6 13:58:23 2012 - Set PythonHome to /home/ubuntu/ve/project
  Mon Feb  6 13:58:23 2012 - Python main interpreter initialized at 0x9a9d740
  Mon Feb  6 13:58:23 2012 - your server socket listen backlog is limited to 100 connections
  Mon Feb  6 13:58:23 2012 - *** Operational MODE: preforking ***
  Mon Feb  6 13:58:23 2012 - added /home/ubuntu/django-projects/project/ to pythonpath.
  ImportError: No module named wsgi
  Mon Feb  6 13:58:23 2012 - unable to load app 0 (mountpoint='') (callable not found or import error)
  Mon Feb  6 13:58:23 2012 - *** no app loaded. going in full dynamic mode ***
  Mon Feb  6 13:58:23 2012 - *** uWSGI is running in multiple interpreter mode ***
  Mon Feb  6 13:58:23 2012 - spawned uWSGI master process (pid: 551)
  Mon Feb  6 13:58:23 2012 - spawned uWSGI worker 1 (pid: 588, cores: 1)
  Mon Feb  6 13:58:23 2012 - spawned uWSGI worker 2 (pid: 589, cores: 1)
  </code></pre>
  
  <p>I don't know if the way I set up my project has anything to do with it, but anyways heres the manage file that I use to redirect django utilities:</p>
  
  <p>manage.sh</p>
  
  <pre><code>#!/bin/bash
  
  python ./project/configs/${DEPLOYMENT_TARGET:="common"}/manage.py $*
  </code></pre>
  
  <p>and just in case this is how I have set up a django project:</p>
  
  <pre><code>project
  |-manage.sh -&gt; this fellow is redirected to settings.py (production, common or staging)
  |-requirements.txt
  |-README
  |-dashbard.py
  |-project.sqlite
  |- project/
      |- apps
          |- accounts
          |-other internal apps
      |- configs 
          |- common -&gt; for local development
              |-settings.py
              |-manage.py
              |-urls
          |-staging
              |-manage.py
              |-settings.py
              |-wsgi.py
              |-logging.conf
          |-production
              |-manage.py
              |-settings.py
              |-wsgi.py
              |-logging.conf
      |-media
      |-templates
  </code></pre>