django.core.exceptions.ImproperlyConfigured: Requested setting USE_I18N, but settings are not configured
Question:
I want to connect MySQL database to my django project, but it is throwing an error :
“django.core.exceptions.ImproperlyConfigured: Requested setting
USE_I18N, but settings are not configured. You must either define the
environment variable DJANGO_SETTINGS_MODULE or call
settings.configure() before accessing settings.”
Trace:
(myenv) LIBINGLADWINs-MacBook-Air:libinrenold$ django-admin dbshell
Traceback (most recent call last):
File "/Users/libinrenold/Desktop/djangoworks/myenv/bin/django-admin", line 11, in <module>
sys.exit(execute_from_command_line())
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
utility.execute()
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/core/management/__init__.py", line 356, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/core/management/base.py", line 322, in execute
saved_locale = translation.get_language()
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/utils/translation/__init__.py", line 195, in get_language
return _trans.get_language()
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/utils/translation/__init__.py", line 59, in __getattr__
if settings.USE_I18N:
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/conf/__init__.py", line 56, in __getattr__
self._setup(name)
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/conf/__init__.py", line 39, in _setup
% (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting USE_I18N, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
settings.py.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'user',
'PASSWORD': 'root',
'HOST':'',
'PORT': '',
}
}
Answers:
You must define the relevant variable to show where your settings.py
file lives:
export DJANGO_SETTINGS_MODULE=mysite.settings
This is the relevant docs entry:
When you use Django, you have to tell it which settings you’re using.
Do this by using an environment variable, DJANGO_SETTINGS_MODULE.
The value of DJANGO_SETTINGS_MODULE should be in Python path syntax,
e.g. mysite.settings. Note that the settings module should be on the
Python import search path.
If you are using a virtualenv (which is the best practice), you can paste the relevant export
command in the file <path-to-virtualenv>/bin/activate
put this in top of settings.py
this will configure django for you
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", __file__)
import django
django.setup()
Like raratiru answered, you need DJANGO_SETTINGS_MODULE
environment variable defined with the relative pythonic path to your setting file.
OR use your django-admin
command with the settings
parameter:
django-admin --settings=mysite.settings dbshell
It happens to me too, I just now found unintentional.
I changed “configuration” in top of PyCharm IDE so pycharm confused when try to run django code. Exactly the problem popup when I try to run server with shortcut but when I used terminal to run server, I found django code not having any problem and pycharm can’t found setting.
So please check “configuration” in top pycharm’s ide maybe you do same mistake 🙂
I’m new in django so be calm if my answer was silly.
I had the same error with Django 3.0.8 (july 2020) when trying to run the server, and in my case no need for the DJANGO_SETTINGS_MODULE environment variable. The solution is to use another form to run the server:
cd <directory containing manage.py>
python3 manage.py runserver
It works to run Django shell too :
python3 manage.py shell
Problem
I had the same error with Django==3.2 and djangorestframework==3.12.4 (2021/04) when I ran unittest. In my case, the python manage.py test
works properly but I cannot directly run or debug the test module which was in a specific app, and I get this error:
django.core.exceptions.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.
Solution
First I added the django project root to the sys.path
. Then I added DJANGO_SETTINGS_MODULE
to the environment variable to address the project setting root and called the Django setup
function. This is my code:
from os import path, environ
from sys import path as sys_path
from django import setup
sys_path.append(<path to django setting.py>)
environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_project.settings')
setup()
I had this problem because I tried to import a django script after just typing
python
instead of
python manage.py shell
Duh!
Below code in terminal to manually inform which settings I am using worked for me:
set DJANGO_SETTINGS_MODULE=mysite.settings
Dear all I faced the same problem and i scrapped the web to find a solution. None of the one above solved anything.
The issue in my case was related to a wrong configuration of pycharm. As for someone above the app didnt have any issue when launched from the command line/ shell.
The issue is here:
For some reason the env variable disappeared. i added back and everything started to work again without any issue.
I want to connect MySQL database to my django project, but it is throwing an error :
“django.core.exceptions.ImproperlyConfigured: Requested setting
USE_I18N, but settings are not configured. You must either define the
environment variable DJANGO_SETTINGS_MODULE or call
settings.configure() before accessing settings.”
Trace:
(myenv) LIBINGLADWINs-MacBook-Air:libinrenold$ django-admin dbshell
Traceback (most recent call last):
File "/Users/libinrenold/Desktop/djangoworks/myenv/bin/django-admin", line 11, in <module>
sys.exit(execute_from_command_line())
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
utility.execute()
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/core/management/__init__.py", line 356, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/core/management/base.py", line 322, in execute
saved_locale = translation.get_language()
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/utils/translation/__init__.py", line 195, in get_language
return _trans.get_language()
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/utils/translation/__init__.py", line 59, in __getattr__
if settings.USE_I18N:
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/conf/__init__.py", line 56, in __getattr__
self._setup(name)
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/conf/__init__.py", line 39, in _setup
% (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting USE_I18N, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
settings.py.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'user',
'PASSWORD': 'root',
'HOST':'',
'PORT': '',
}
}
You must define the relevant variable to show where your settings.py
file lives:
export DJANGO_SETTINGS_MODULE=mysite.settings
This is the relevant docs entry:
When you use Django, you have to tell it which settings you’re using.
Do this by using an environment variable, DJANGO_SETTINGS_MODULE.The value of DJANGO_SETTINGS_MODULE should be in Python path syntax,
e.g. mysite.settings. Note that the settings module should be on the
Python import search path.
If you are using a virtualenv (which is the best practice), you can paste the relevant export
command in the file <path-to-virtualenv>/bin/activate
put this in top of settings.py
this will configure django for you
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", __file__)
import django
django.setup()
Like raratiru answered, you need DJANGO_SETTINGS_MODULE
environment variable defined with the relative pythonic path to your setting file.
OR use your django-admin
command with the settings
parameter:
django-admin --settings=mysite.settings dbshell
It happens to me too, I just now found unintentional.
I changed “configuration” in top of PyCharm IDE so pycharm confused when try to run django code. Exactly the problem popup when I try to run server with shortcut but when I used terminal to run server, I found django code not having any problem and pycharm can’t found setting.
So please check “configuration” in top pycharm’s ide maybe you do same mistake 🙂
I’m new in django so be calm if my answer was silly.
I had the same error with Django 3.0.8 (july 2020) when trying to run the server, and in my case no need for the DJANGO_SETTINGS_MODULE environment variable. The solution is to use another form to run the server:
cd <directory containing manage.py>
python3 manage.py runserver
It works to run Django shell too :
python3 manage.py shell
Problem
I had the same error with Django==3.2 and djangorestframework==3.12.4 (2021/04) when I ran unittest. In my case, the python manage.py test
works properly but I cannot directly run or debug the test module which was in a specific app, and I get this error:
django.core.exceptions.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.
Solution
First I added the django project root to the sys.path
. Then I added DJANGO_SETTINGS_MODULE
to the environment variable to address the project setting root and called the Django setup
function. This is my code:
from os import path, environ
from sys import path as sys_path
from django import setup
sys_path.append(<path to django setting.py>)
environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_project.settings')
setup()
I had this problem because I tried to import a django script after just typing
python
instead of
python manage.py shell
Duh!
Below code in terminal to manually inform which settings I am using worked for me:
set DJANGO_SETTINGS_MODULE=mysite.settings
Dear all I faced the same problem and i scrapped the web to find a solution. None of the one above solved anything.
The issue in my case was related to a wrong configuration of pycharm. As for someone above the app didnt have any issue when launched from the command line/ shell.
The issue is here:
For some reason the env variable disappeared. i added back and everything started to work again without any issue.