ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured
Question:
I’m trying to make MongoDB and Django get on with each other the way I want them to.
That’s the error I’m getting when trying to import viewsets from rest_framework_mongoengine.
The whole error looks like this:
ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
It doesn’t find settings.py
or what? If so I can’t figure out why! Namely, say, why did this problem not appear with other modules then?
Here are my INSTALLED APPS
INSTALLED_APPS = [
'rest_framework',
'rest_framework_mongoengine',
'mongoengine.django.mongo_auth',
'rest_framework.authtoken',
'corsheaders',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_extensions',
'core',
'core.essences.user',
'core.essences.user.authentication',
'core.essences.test_result',
]
Answers:
Most common cause of this is that you’re just running python
instead of using python manage.py shell
, which means you need to manually set the DJANGO_SETTINGS_MODULE
environment variable so Django knows where to find your settings (manage.py shell
does that for you automatically).
It’s also possible (but less common) that you have something that’s trying to import settings during the process of setting up your settings. To determine if that’s the case, look at your settings file for any imports or function calls that might need to access settings (including code in things being imported by your settings file).
Try this in your xx.py:
from yourProjectName.wsgi import *
Run python manage.py shell
instead of running python
to reach environment shell in your project. Python
does not simply recognize django
installed apps by default.
If you are using windows run
set DJANGO_SETTINGS_MODULE= <yourProjectName>.settings
(or) navigate to the folder containing settings file in terminal and run
set DJANGO_SETTINGS_MODULE=settings
try python manage.py shell
instead of python
in terminal for interactive environment.
For anyone still experiencing this issue with little resolve, Ensure the setdefault DJANGO_SETTINGS_MODULE is moved to the top of the script file.
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my_crazy_service.settings')
django.setup()
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from django.core.asgi import get_asgi_application
disregard the squiggly marks
I saw this exception in the python console in pycharm when I run the following command,
from app_name.models import model_name
by the soloution present above, before this command, I used below command and the problem is solved
from project_name.wsgi import *
I’m trying to make MongoDB and Django get on with each other the way I want them to.
That’s the error I’m getting when trying to import viewsets from rest_framework_mongoengine.
The whole error looks like this:
ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
It doesn’t find settings.py
or what? If so I can’t figure out why! Namely, say, why did this problem not appear with other modules then?
Here are my INSTALLED APPS
INSTALLED_APPS = [
'rest_framework',
'rest_framework_mongoengine',
'mongoengine.django.mongo_auth',
'rest_framework.authtoken',
'corsheaders',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_extensions',
'core',
'core.essences.user',
'core.essences.user.authentication',
'core.essences.test_result',
]
Most common cause of this is that you’re just running python
instead of using python manage.py shell
, which means you need to manually set the DJANGO_SETTINGS_MODULE
environment variable so Django knows where to find your settings (manage.py shell
does that for you automatically).
It’s also possible (but less common) that you have something that’s trying to import settings during the process of setting up your settings. To determine if that’s the case, look at your settings file for any imports or function calls that might need to access settings (including code in things being imported by your settings file).
Try this in your xx.py:
from yourProjectName.wsgi import *
Run python manage.py shell
instead of running python
to reach environment shell in your project. Python
does not simply recognize django
installed apps by default.
If you are using windows run
set DJANGO_SETTINGS_MODULE= <yourProjectName>.settings
(or) navigate to the folder containing settings file in terminal and run
set DJANGO_SETTINGS_MODULE=settings
try python manage.py shell
instead of python
in terminal for interactive environment.
For anyone still experiencing this issue with little resolve, Ensure the setdefault DJANGO_SETTINGS_MODULE is moved to the top of the script file.
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my_crazy_service.settings')
django.setup()
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from django.core.asgi import get_asgi_application
disregard the squiggly marks
I saw this exception in the python console in pycharm when I run the following command,
from app_name.models import model_name
by the soloution present above, before this command, I used below command and the problem is solved
from project_name.wsgi import *