title: Gunicorn, no module named 'myproject
body: <p>I'm installing a previously built website on a new server. I'm not the original developer.</p>
  <p>I've used Gunicorn + nginx in the past to keep the app alive (basically following <a href="https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-14-04" rel="noreferrer">this tutorial</a>), but am having problems with it here.</p>
  <p>I <code>source venv/bin/activate</code>, then <code>./manage.py runserver 0.0.0.0:8000</code> works well and everything is running as expected. I shut it down and run <code>gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application</code>, and get the following:</p>
  <pre><code>[2016-09-13 01:11:47 +0000] [15259] [INFO] Starting gunicorn 19.6.0
  [2016-09-13 01:11:47 +0000] [15259] [INFO] Listening at: http://0.0.0.0:8000 (15259)
  [2016-09-13 01:11:47 +0000] [15259] [INFO] Using worker: sync
  [2016-09-13 01:11:47 +0000] [15262] [INFO] Booting worker with pid: 15262
  [2016-09-13 01:11:47 +0000] [15262] [ERROR] Exception in worker process
  Traceback (most recent call last):
    File &quot;/var/www/myproject/venv/lib/python3.5/site-packages/gunicorn/arbiter.py&quot;, line 557, in spawn_worker
      worker.init_process()
    File &quot;/var/www/myproject/venv/lib/python3.5/site-packages/gunicorn/workers/base.py&quot;, line 126, in init_process
      self.load_wsgi()
    File &quot;/var/www/myproject/venv/lib/python3.5/site-packages/gunicorn/workers/base.py&quot;, line 136, in load_wsgi
      self.wsgi = self.app.wsgi()
    File &quot;/var/www/myproject/venv/lib/python3.5/site-packages/gunicorn/app/base.py&quot;, line 67, in wsgi
      self.callable = self.load()
    File &quot;/var/www/myproject/venv/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py&quot;, line 65, in load
      return self.load_wsgiapp()
    File &quot;/var/www/myproject/venv/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py&quot;, line 52, in load_wsgiapp
      return util.import_app(self.app_uri)
    File &quot;/var/www/myproject/venv/lib/python3.5/site-packages/gunicorn/util.py&quot;, line 357, in import_app
      __import__(module)
  ImportError: No module named 'myproject.wsgi'
  [2016-09-13 01:11:47 +0000] [15262] [INFO] Worker exiting (pid: 15262)
  [2016-09-13 01:11:47 +0000] [15259] [INFO] Shutting down: Master
  [2016-09-13 01:11:47 +0000] [15259] [INFO] Reason: Worker failed to boot.
  </code></pre>
  <p>I believe it has something to do with the structure of the whole application. Before, I've built apps with the basic structure of:</p>
  <pre><code>myproject
  ├── manage.py
  ├── myproject
  │   ├── urls.py
  │   ├── views.py
  │   ├── component1
  │   │   ├── urls.py
  │   │   └── views.py
  │   ├── component2
  │   │   ├── urls.py
  │   │   └── views.py
  ├── venv
  │   ├── bin
  │   └── ...
  </code></pre>
  <p>This one, instead, has a structure like:</p>
  <pre><code>myproject
  ├── apps
  │   ├── blog
  │   │   ├── urls.py
  │   │   ├── views.py
  │   │     └── ...
  │   ├── catalogue
  │   │   ├── urls.py
  │   │   ├── views.py
  │   │     └── ...
  │   ├── checkout
  │   │   ├── urls.py
  │   │   ├── views.py
  │   │     └── ...
  │   ├── core
  │   │   ├── urls.py
  │   │   ├── views.py
  │   │     └── ...
  │   ├── customer
  │   ├── dashboard
  │   └──  __init__.py
  ├── __init__.py
  ├── manage.py
  ├── project_static
  │   ├── assets
  │   ├── bower_components
  │   └── js
  ├── public
  │   ├── emails
  │   ├── media
  │   └── static
  ├── settings
  │   ├── base.py
  │   ├── dev.py
  │   ├── __init__.py
  │   ├── local.py
  │   └── production.py
  ├── templates
  │   ├── base.html
  │   ├── basket
  │   ├── blog
  │   └── ....
  ├── urls.py
  ├── venv
  │   ├── bin
  │   ├── include
  │   ├── lib
  │   ├── pip-selfcheck.json
  │   └── share
  └── wsgi.py
  </code></pre>
  <p>So, there's no 'main' module running the show, which is what I expect gunicorn is looking for.</p>
  <p>Any thoughts?</p>
  <p><strong>wsgi.py</strong>:</p>
  <pre><code>import os
  
  from django.core.wsgi import get_wsgi_application
  
  os.environ.setdefault(&quot;DJANGO_SETTINGS_MODULE&quot;, &quot;settings&quot;)
  
  application = get_wsgi_application()
  </code></pre>