잘못 구성됨:설정에 액세스하기 전에 환경 변수 DJANO_Settings_MODULE을 정의하거나 settings.configure()를 호출해야 합니다.
Heroku에 배포할 Django 프로젝트를 구성하려고 했습니다.다음과 같은 오류가 발생하고 있는데 어떻게 수정해야 할지 잘 모르겠습니다.
다음은 전체 추적 및 오류입니다.
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())
그리고 관련이 있는 경우를 대비해서, 제 매니저님.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)
이 문제를 이해할 수 있는 사람이 있습니까?그리고 만약 그렇다면, 당신은 무엇이 잘못되었는지 설명해 줄 수 있습니까?
저는 DJANGO_SETTINGS_MODULE이 어떤 식으로든 설정되어야 한다고 생각했기 때문에 설명서(링크 업데이트됨)를 보고 다음을 발견했습니다.
export DJANGO_SETTINGS_MODULE=mysite.settings
herku에서 서버를 실행하는 경우에는 충분하지 않지만 herku에서도 서버를 지정해야 합니다.다음과 같이:
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
암호의 핵심까지.이제부터는 가상 환경을 활성화할 때마다 해당 앱의 설정을 사용하게 됩니다.
최종 가이드에서 장고까지: 웹 개발을 제대로 완료되었습니다.
이전에 Python을 사용한 적이 있다면, 왜 우리가 운영되고 있는지 궁금할 것입니다.
python manage.py shell
의 대신에python
두 명령 모두 대화형 인터프리터를 시작하지만,manage.py shell
명령에는 한 가지 주요 차이점이 있습니다. 인터프리터를 시작하기 전에 장고에게 사용할 설정 파일을 알려줍니다.
사용 사례:템플릿 시스템을 포함한 Django의 많은 부분은 당신의 설정에 의존하며, 프레임워크가 어떤 설정을 사용해야 하는지 알지 못하면 당신은 그것들을 사용할 수 없을 것입니다.
궁금하다면, 이것이 어떻게 작동하는지를 보여줍니다.장고는 다음과 같은 환경 변수를 찾습니다.
DJANGO_SETTINGS_MODULE
settings.py 의 가져오기 경로로 설정해야 합니다.예를들면,DJANGO_SETTINGS_MODULE
으로 설정할 수 있습니다.'mysite.settings'
내 사이트가 당신의 파이썬 경로에 있다고 가정합니다.실행할 때
python manage.py shell
명령이 설정을 처리합니다.DJANGO_SETTINGS_MODULE
널 위해서.**
Django에는 응용 프로그램별 설정이 필요합니다.이미 당신의 내부에 있기 때문입니다.manage.py
그냥 그것을 사용하세요.더 빠르지만 일시적인 솔루션은 다음과 같습니다.
python manage.py shell
내 경우에는 그것이 사용되었습니다.call_command
문제가 발생한 모듈입니다.
추가했습니다.set DJANGO_SETTINGS_MODULE=mysite.settings
하지만 그것은 작동하지 않았다.
드디어 찾았어요.
스크립트의 맨 위에 이 행을 추가하면 순서가 중요합니다.
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
import django
django.setup()
from django.core.management import call_command
만약 당신이 서버에서 다프네를 실행하려고 시도하는 동안 오류로 인해 여기에 있다면, 여기 당신을 위한 답이 있습니다.
asgi.py 파일을 이렇게 변경합니다.
import os
from django.conf.urls import url
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mc_backend.settings')
from channels.routing import ProtocolTypeRouter, URLRouter
from django.core.asgi import get_asgi_application
django_asgi_app = get_asgi_application()
from channels.auth import AuthMiddlewareStack
import api_backend.routing
application = ProtocolTypeRouter({
"http": django_asgi_app,
'websocket': AuthMiddlewareStack(
URLRouter(
api_backend.routing.websocket_urlpatterns
)
)
})
저의 경우, 그것은 파이썬 경로 문제였습니다.
- 번째 세트 【1】
your PYTHONPATH
- 그 다음 세트
DJANGO_SETTINGS_MODULE
- 그 다음에 달려라
django-admin
명령shell 명령)django-admin dbshell
)
(venv) shakeel@workstation:~/project_path$ export PYTHONPATH=/home/shakeel/project_path
(venv) shakeel@workstation:~/project_path$ export DJANGO_SETTINGS_MODULE=my_project.settings
(venv) shakeel@workstation:~/project_path$ django-admin dbshell
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
sqlite>
않으면python manage.py shell
매력적으로 작용합니다.
파이썬 콘솔에서 모델을 가져오는 동안 이 오류가 발생했습니다.해결 방법:
import os, django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_app.settings")
django.setup()
my_app.settings
는 에대경니다입의 입니다.settings.py
그런 다음 모델을 가져올 수 있습니다.
from users.models import UserModel
프로젝트 루트에 사용자의 자격 증명을 보관하고 버전 관리에서 제외할 .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']
이 보석을 사용하여 헤로쿠에 게시: http://github.com/ddollar/heroku-config.git
$ heroku plugins:install git://github.com/ddollar/heroku-config.git
$ heroku config:push
이렇게 하면 가상 환경 파일을 변경할 수 없습니다.
*이 튜토리얼을 기반으로 함
로컬 서버를 사용하는 경우 다음을 사용하여 Django 셸을 실행합니다.python manage.py shell
장고 비단뱀 환경으로 데려다 줄 것이고 당신은 가도 좋습니다.
저는 장고 프로젝트의 가상 환경을 관리하기 위해 pipenv를 사용했습니다.
솔루션
1. pipenv shell
2. python manage.py shell
제가 수입 방법을 잘못 알고 있었습니다.
먼저 나는 장고를 사용하지 않은 장고 모델을 가져왔습니다(파일에서 장고를 사용했다고 선언하기 전에).
import pika, json, os, django
from products.models import Product
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "admin.settings")
django.setup()
하지만 그 후 아래와 같이 가져오기를 변경했고 작동합니다(기본적으로 파일이 장고를 사용한다고 선언한 다음 모델과 다른 앱을 가져옵니다).
import pika, json, os, django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "admin.settings")
django.setup()
from products.models import Product
관리자를 설정할 때 이 오류를 발견했습니다.피미list_display = ('name',)
을 다변했습니경으로 바꿨습니다.list_display = ('name','date')
그리고 그것은 성공하였다.
저는 누락된 변수를 소개하기만 하면 되었습니다."Preferences" => "Terminal" => "Environment variables"
:
- 에 가다
Preferences (cmd +,)
- 에 가다
Terminal
, DJANGO_SETTINGS_MODULE를 합니다.◦ DJANO_설정_MODULE)를 추가합니다.
PYTHONPATH
프로젝트 루트의 절대 경로를 가리킵니다.
DJANGO_SETTINGS_MODULE
이름을 경로를 지정하지 않음)..py
)
첨부된 사진을 보세요!
언급URL : https://stackoverflow.com/questions/26082128/improperlyconfigured-you-must-either-define-the-environment-variable-django-set
'sourcecode' 카테고리의 다른 글
앱 대리인에서 초기 뷰 컨트롤러 설정 - swift (0) | 2023.07.17 |
---|---|
한 축을 따라 NumPy 배열의 최대 요소 인덱스를 가져오는 방법 (0) | 2023.07.17 |
파이썬에서 딕트에 도트 표기법을 사용하는 방법은 무엇입니까? (0) | 2023.07.17 |
SQL Server: 로그인은 성공했지만 "데이터베이스 [dbName]에 액세스할 수 없습니다. (Object Explorer)" (0) | 2023.07.12 |
python의 csv 모듈을 사용하여 .xlsx에서 읽기 (0) | 2023.07.12 |