[PYTHON] ImproperlyConfigured : 설정에 액세스하기 전에 환경 변수 DJANGO_SETTINGS_MODULE을 정의하거나 settings.configure ()를 호출해야합니다.
PYTHONImproperlyConfigured : 설정에 액세스하기 전에 환경 변수 DJANGO_SETTINGS_MODULE을 정의하거나 settings.configure ()를 호출해야합니다.
나는 heroku에 배포 할 내 장고 프로젝트를 구성하려고했습니다. 나는 뒤에 오는 과실을 얻고있다 그리고 나는 진짜로 그것을 고치는 방법을 모른다.
다음은 전체 추적 및 오류입니다.
22:46:15 web.1 | Traceback (most recent call last):
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/arbiter.py", line 495, in spawn_worker
22:46:15 web.1 | worker.init_process()
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/workers/base.py", line 106, in init_process
22:46:15 web.1 | self.wsgi = self.app.wsgi()
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/app/base.py", line 114, in wsgi
22:46:15 web.1 | self.callable = self.load()
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 62, in load
22:46:15 web.1 | return self.load_wsgiapp()
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load_wsgiapp
22:46:15 web.1 | return util.import_app(self.app_uri)
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/util.py", line 354, in import_app
22:46:15 web.1 | __import__(module)
22:46:15 web.1 | File "/Users/nir/nirla/nirla/wsgi.py", line 12, in <module>
22:46:15 web.1 | from dj_static import Cling
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/dj_static.py", line 7, in <module>
22:46:15 web.1 | from django.contrib.staticfiles.handlers import StaticFilesHandler as DebugHandler
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py", line 8, in <module>
22:46:15 web.1 | from django.contrib.staticfiles.views import serve
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/contrib/staticfiles/views.py", line 13, in <module>
22:46:15 web.1 | from django.views import static
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/views/static.py", line 96, in <module>
22:46:15 web.1 | template_translatable = ugettext_noop("Index of %(directory)s")
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 65, in gettext_noop
22:46:15 web.1 | return _trans.gettext_noop(message)
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 52, in __getattr__
22:46:15 web.1 | if settings.USE_I18N:
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/conf/__init__.py", line 54, in __getattr__
22:46:15 web.1 | self._setup(name)
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/conf/__init__.py", line 47, in _setup
22:46:15 web.1 | % (desc, ENVIRONMENT_VARIABLE))
22:46:15 web.1 | 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.
다음은 내 wsgi.py 파일입니다.
import os
from django.core.wsgi import get_wsgi_application
from dj_static import Cling
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "nirla.settings") #nirla is the name of the project
application = Cling(get_wsgi_application())
그리고 관련성이있는 경우, 내 manage.py 파일 :
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "nirla.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
아무도 문제를 여기에서 이해하는 것처럼 보일 수 있습니까? 그렇다면 무엇이 잘못되었는지를 친절하게 설명해 주실 수 있습니까? 고맙습니다!
해결법
-
==============================
1.DJANGO_SETTINGS_MODULE이 어떤 식 으로든 설정되어야한다는 것을 알았 기 때문에 문서 (링크가 업데이트 됨)를보고 찾았습니다.
DJANGO_SETTINGS_MODULE이 어떤 식 으로든 설정되어야한다는 것을 알았 기 때문에 문서 (링크가 업데이트 됨)를보고 찾았습니다.
export DJANGO_SETTINGS_MODULE=mysite.settings
heroku에서 서버를 실행하는 것만으로는 충분하지 않지만 서버에서 heroku를 지정해야합니다. 이렇게 :
heroku config:set DJANGO_SETTINGS_MODULE=mysite.settings --account <your account name>
내 경우에는이 두 가지를 실행하고 모든 것이 잘 풀렸다.
export DJANGO_SETTINGS_MODULE=nirla.settings heroku config:set DJANGO_SETTINGS_MODULE=nirla.settings --account personal
편집하다
또한 가상 환경을 닫거나 다시 시작할 때마다 다시해야한다고 지적하고 싶습니다. 대신 venv / bin / activate으로 이동하여 다음 줄을 추가하여 프로세스를 자동화해야합니다. set DJANGO_SETTINGS_MODULE = mysite.settings를 코드 맨 아래에 추가하십시오. 이제부터는 가상 환경을 활성화 할 때마다 해당 응용 프로그램의 설정을 사용하게됩니다.
-
==============================
2.장고에 대한 확실한 안내서 : 웹 개발의 성공 :
장고에 대한 확실한 안내서 : 웹 개발의 성공 :
-
==============================
3.장고는 응용 프로그램 특정 설정이 필요합니다. 이미 manage.py에 들어 있기 때문에. 더 빠르지 만 일시적인 해결책은 다음과 같습니다 ::
장고는 응용 프로그램 특정 설정이 필요합니다. 이미 manage.py에 들어 있기 때문에. 더 빠르지 만 일시적인 해결책은 다음과 같습니다 ::
python manage.py shell
-
==============================
4.프로젝트의 루트에서 자격 증명을 보유 할 .env 파일을 만들고 버전 관리에서 벗어나십시오.
프로젝트의 루트에서 자격 증명을 보유 할 .env 파일을 만들고 버전 관리에서 벗어나십시오.
$ echo ".env" >> .gitignore
.env 파일에서 변수를 추가합니다 (설치에 따라 변수를 수정하십시오).
$ echo "DJANGO_SETTINGS_MODULE=myproject.settings.production"> .env #50 caracter random key $ echo "SECRET_KEY='####'">> .env
이를 사용하려면 production.py 설정 파일 위에 다음을 추가하십시오.
import os env = os.environ.copy() SECRET_KEY = env['SECRET_KEY']
이 보석을 사용하여 Heroku에 게시하십시오 : http://github.com/ddollar/heroku-config.git
$ heroku plugins:install git://github.com/ddollar/heroku-config.git $ heroku config:push
이렇게하면 virtualenv 파일을 변경하지 않아도됩니다.
*이 자습서를 기반으로합니다.
-
==============================
5.다음 명령을 사용하십시오.
다음 명령을 사용하십시오.
python manage.py 쉘
이것은 자동으로 django 환경 변수를 설정합니다.
from https://stackoverflow.com/questions/26082128/improperlyconfigured-you-must-either-define-the-environment-variable-django-set by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에서 빈리스트의리스트 또는 튜플을 만드는 방법은? (0) | 2018.10.19 |
---|---|
[PYTHON] Matplotlib 축 범례의 글꼴 크기를 설정하는 방법? (0) | 2018.10.19 |
[PYTHON] 파이썬 클래스에서 메소드를 정렬하는 좋은 방법은 무엇입니까? (0) | 2018.10.19 |
[PYTHON] 파이썬 : "튜플 목록"을 1 개의 평면 목록 또는 1 개의 매트릭스로 변환합니다. (0) | 2018.10.19 |
[PYTHON] 지역 ()을 사용하는 파이썬 사전 이해력은 KeyError를 제공합니다. (0) | 2018.10.19 |