Gunicorn, no module named 'myproject
<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>