Search code examples
pythondjangopostgresqlherokudeployment

ModuleNotFoundError: no module name 'mysite.settings'


I have been trying to deploy my django project on heroku and have been butting my head against this error for a week. everything runs fine locally but when i push to heroku, all i get is an application error with this information in heroku logs --tail

2021-06-12T04:09:09.270161+00:00 heroku[web.1]: State changed from crashed to starting
2021-06-12T04:09:12.000000+00:00 app[api]: Build succeeded
2021-06-12T04:09:17.474951+00:00 heroku[web.1]: Starting process with command `gunicorn mysite.mysite.wsgi`
2021-06-12T04:09:20.249454+00:00 app[web.1]: [2021-06-12 04:09:20 +0000] [4] [INFO] Starting gunicorn 20.1.0
2021-06-12T04:09:20.250347+00:00 app[web.1]: [2021-06-12 04:09:20 +0000] [4] [INFO] Listening at: http://0.0.0.0:48385 (4)
2021-06-12T04:09:20.250492+00:00 app[web.1]: [2021-06-12 04:09:20 +0000] [4] [INFO] Using worker: sync
2021-06-12T04:09:20.255741+00:00 app[web.1]: [2021-06-12 04:09:20 +0000] [8] [INFO] Booting worker with pid: 8
2021-06-12T04:09:20.275136+00:00 app[web.1]: [2021-06-12 04:09:20 +0000] [9] [INFO] Booting worker with pid: 9
2021-06-12T04:09:20.462240+00:00 app[web.1]: [2021-06-12 04:09:20 +0000] [8] [ERROR] Exception in worker process
2021-06-12T04:09:20.462242+00:00 app[web.1]: Traceback (most recent call last):
2021-06-12T04:09:20.462243+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
2021-06-12T04:09:20.462243+00:00 app[web.1]: worker.init_process()
2021-06-12T04:09:20.462244+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/workers/base.py", line 134, in init_process
2021-06-12T04:09:20.462244+00:00 app[web.1]: self.load_wsgi()
2021-06-12T04:09:20.462245+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
2021-06-12T04:09:20.462245+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2021-06-12T04:09:20.462245+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/app/base.py", line 67, in wsgi
2021-06-12T04:09:20.462246+00:00 app[web.1]: self.callable = self.load()
2021-06-12T04:09:20.462246+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
2021-06-12T04:09:20.462247+00:00 app[web.1]: return self.load_wsgiapp()
2021-06-12T04:09:20.462247+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
2021-06-12T04:09:20.462247+00:00 app[web.1]: return util.import_app(self.app_uri)
2021-06-12T04:09:20.462248+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/util.py", line 359, in import_app
2021-06-12T04:09:20.462248+00:00 app[web.1]: mod = importlib.import_module(module)
2021-06-12T04:09:20.462249+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/importlib/__init__.py", line 127, in import_module
2021-06-12T04:09:20.462249+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2021-06-12T04:09:20.462250+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
2021-06-12T04:09:20.462250+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 991, in _find_and_load
2021-06-12T04:09:20.462251+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
2021-06-12T04:09:20.462251+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
2021-06-12T04:09:20.462251+00:00 app[web.1]: File "<frozen importlib._bootstrap_external>", line 848, in exec_module
2021-06-12T04:09:20.462252+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2021-06-12T04:09:20.462252+00:00 app[web.1]: File "/app/mysite/mysite/wsgi.py", line 22, in <module>
2021-06-12T04:09:20.462254+00:00 app[web.1]: application = get_wsgi_application()
2021-06-12T04:09:20.462255+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
2021-06-12T04:09:20.462255+00:00 app[web.1]: django.setup(set_prefix=False)
2021-06-12T04:09:20.462256+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/__init__.py", line 19, in setup
2021-06-12T04:09:20.462256+00:00 app[web.1]: configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
2021-06-12T04:09:20.462257+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/conf/__init__.py", line 82, in __getattr__
2021-06-12T04:09:20.462257+00:00 app[web.1]: self._setup(name)
2021-06-12T04:09:20.462257+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/conf/__init__.py", line 69, in _setup
2021-06-12T04:09:20.462258+00:00 app[web.1]: self._wrapped = Settings(settings_module)
2021-06-12T04:09:20.462258+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/conf/__init__.py", line 170, in __init__
2021-06-12T04:09:20.462258+00:00 app[web.1]: mod = importlib.import_module(self.SETTINGS_MODULE)
2021-06-12T04:09:20.462259+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/importlib/__init__.py", line 127, in import_module
2021-06-12T04:09:20.462259+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2021-06-12T04:09:20.462260+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
2021-06-12T04:09:20.462260+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 991, in _find_and_load
2021-06-12T04:09:20.462260+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
2021-06-12T04:09:20.462261+00:00 app[web.1]: ModuleNotFoundError: No module named 'mysite.settings'
2021-06-12T04:09:20.462431+00:00 app[web.1]: [2021-06-12 04:09:20 +0000] [8] [INFO] Worker exiting (pid: 8)
2021-06-12T04:09:20.498181+00:00 app[web.1]: [2021-06-12 04:09:20 +0000] [9] [ERROR] Exception in worker process
2021-06-12T04:09:20.498183+00:00 app[web.1]: Traceback (most recent call last):
2021-06-12T04:09:20.498184+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
2021-06-12T04:09:20.498185+00:00 app[web.1]: worker.init_process()
2021-06-12T04:09:20.498185+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/workers/base.py", line 134, in init_process
2021-06-12T04:09:20.498185+00:00 app[web.1]: self.load_wsgi()
2021-06-12T04:09:20.498186+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
2021-06-12T04:09:20.498186+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2021-06-12T04:09:20.498187+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/app/base.py", line 67, in wsgi
2021-06-12T04:09:20.498187+00:00 app[web.1]: self.callable = self.load()
2021-06-12T04:09:20.498188+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
2021-06-12T04:09:20.498188+00:00 app[web.1]: return self.load_wsgiapp()
2021-06-12T04:09:20.498188+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
2021-06-12T04:09:20.498189+00:00 app[web.1]: return util.import_app(self.app_uri)
2021-06-12T04:09:20.498189+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/util.py", line 359, in import_app
2021-06-12T04:09:20.498190+00:00 app[web.1]: mod = importlib.import_module(module)
2021-06-12T04:09:20.498190+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/importlib/__init__.py", line 127, in import_module
2021-06-12T04:09:20.498191+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2021-06-12T04:09:20.498191+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
2021-06-12T04:09:20.498191+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 991, in _find_and_load
2021-06-12T04:09:20.498195+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
2021-06-12T04:09:20.498196+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
2021-06-12T04:09:20.498196+00:00 app[web.1]: File "<frozen importlib._bootstrap_external>", line 848, in exec_module
2021-06-12T04:09:20.498196+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2021-06-12T04:09:20.498197+00:00 app[web.1]: File "/app/mysite/mysite/wsgi.py", line 22, in <module>
2021-06-12T04:09:20.498197+00:00 app[web.1]: application = get_wsgi_application()
2021-06-12T04:09:20.498198+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
2021-06-12T04:09:20.498198+00:00 app[web.1]: django.setup(set_prefix=False)
2021-06-12T04:09:20.498198+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/__init__.py", line 19, in setup
2021-06-12T04:09:20.498199+00:00 app[web.1]: configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
2021-06-12T04:09:20.498199+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/conf/__init__.py", line 82, in __getattr__
2021-06-12T04:09:20.498199+00:00 app[web.1]: self._setup(name)
2021-06-12T04:09:20.498200+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/conf/__init__.py", line 69, in _setup
2021-06-12T04:09:20.498200+00:00 app[web.1]: self._wrapped = Settings(settings_module)
2021-06-12T04:09:20.498201+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/conf/__init__.py", line 170, in __init__
2021-06-12T04:09:20.498201+00:00 app[web.1]: mod = importlib.import_module(self.SETTINGS_MODULE)
2021-06-12T04:09:20.498201+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/importlib/__init__.py", line 127, in import_module
2021-06-12T04:09:20.498202+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2021-06-12T04:09:20.498209+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
2021-06-12T04:09:20.498209+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 991, in _find_and_load
2021-06-12T04:09:20.498209+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
2021-06-12T04:09:20.498210+00:00 app[web.1]: ModuleNotFoundError: No module named 'mysite.settings'
2021-06-12T04:09:20.498388+00:00 app[web.1]: [2021-06-12 04:09:20 +0000] [9] [INFO] Worker exiting (pid: 9)
2021-06-12T04:09:20.529306+00:00 app[web.1]: [2021-06-12 04:09:20 +0000] [4] [WARNING] Worker with pid 9 was terminated due to signal 15
2021-06-12T04:09:20.627275+00:00 app[web.1]: [2021-06-12 04:09:20 +0000] [4] [INFO] Shutting down: Master
2021-06-12T04:09:20.627397+00:00 app[web.1]: [2021-06-12 04:09:20 +0000] [4] [INFO] Reason: Worker failed to boot.
2021-06-12T04:09:20.697433+00:00 heroku[web.1]: Process exited with status 3
2021-06-12T04:09:20.764978+00:00 heroku[web.1]: State changed from starting to crashed

my Procfile:

Incorrect web: gunicorn mysite.mysite.wsgi

Solution

    web: gunicorn --chdir mysite mysite.wsgi
   

the ch-dir mysite being the key difference and from my understanding, forcing gunicorn to specifically target mysite/mysite for the wsgi.py

my wsgi.py:

import sys

from django.core.wsgi import get_wsgi_application

path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if path not in sys.path:
    sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

application = get_wsgi_application()

and my directory: picture of my directory, Procfile on same level as manage.py

Any assistance or direction is greatly appreciated


Solution

  • changing my Procfile to

        web: gunicorn --chdir mysite mysite.wsgi
    

    resolved the ModuleNotFound: no module named 'mysite.settings' by changing the current working directory to the parent mysite. Thanks to both of you for your assistance, even though it didn't solve the issue directly, it pointed me in the right direction.