Thinker
Thinker

Reputation: 5366

Django Gunicorn no module named error

My project directory structure looks like following:

enter image description here

My wsgi file:

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")

application = get_wsgi_application()

and my manage.py file:

import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
    try:
        from django.core.management import execute_from_command_line
    except ImportError:
        # The above import may fail for some other reason. Ensure that the
        # issue is really that Django is missing to avoid masking other
        # exceptions on Python 2.
        try:
            import django
        except ImportError:
            raise ImportError(
                "Couldn't import Django. Are you sure it's installed and "
                "available on your PYTHONPATH environment variable? Did you "
                "forget to activate a virtual environment?"
            )
        raise
    execute_from_command_line(sys.argv)

in my settings .py I have:

WSGI_APPLICATION = 'config.wsgi.application'

I added my project path to python with following:

export PYTHONPATH=/home/ec2-user/amm_inovision_backend:$PYTHONPATH

and I am trying to run gunicorn command where my manage.py file is as: gunicorn amm_inovision_backend.config.wsgi:application

But it throws me error no module named amm_inovision_backend.config.wsgi

If I run instead gunicorn config.wsgi:application it throws no module named amm_inovision_backend.config.settings

What am I doing wrong?

Note: in the screenshot it is amm_ino_backend but actually it is amm_inovision_backend in the production

Upvotes: 0

Views: 3133

Answers (2)

Mattia
Mattia

Reputation: 1139

Use:

import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
application = get_wsgi_application()

note the "CONFIG.SETTINGS"

Upvotes: 1

Shehab ElDin
Shehab ElDin

Reputation: 614

when you want to use gunicorn you must run gunicorn installed on your virtual environment.
so you don't need to export any python path, you only need to find path to gunicorn on your virtual-env where Django is installed, or you can add path to virtual environment not to project files.
also you need first to edit your wsgi.py
you have to replace this os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings") with os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")

your command must be something like that:
/path/to/.virtual-envs/your-env/bin/gunicorn config.wsgi:application

Upvotes: 1

Related Questions