Django가 1.9 오류로 업그레이드하는 중 "AppRegistryNotReady : 앱이 아직로드되지 않았습니다."


93

1.8에서 django 1.9로 업그레이드 할 때이 오류가 발생했습니다. 비슷한 질문에 대한 답변을 확인했지만 타사 패키지 또는 앱의 문제라고 생각하지 않았습니다.

Traceback (most recent call last):
File "manage.py", line 10, in <module> execute_from_command_line(sys.argv)
File "/home/kishore/.virtualenvs/andone/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 350, in execute_from_command_line
utility.execute()
File "/home/kishore/.virtualenvs/andone/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 342, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/kishore/.virtualenvs/andone/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 176, in fetch_command
commands = get_commands()
File "/home/kishore/.virtualenvs/andone/local/lib/python2.7/site-packages/django/utils/lru_cache.py", line 100, in wrapper
result = user_function(*args, **kwds)
File "/home/kishore/.virtualenvs/andone/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 71, in get_commands
for app_config in reversed(list(apps.get_app_configs())):
File "/home/kishore/.virtualenvs/andone/local/lib/python2.7/site-packages/django/apps/registry.py", line 137, in get_app_configs
self.check_apps_ready()
File "/home/kishore/.virtualenvs/andone/local/lib/python2.7/site-packages/django/apps/registry.py", line 124, in check_apps_ready
raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

'django.contrib.auth'에 대해 설치된 앱을 수정했습니다.


1
타사 앱을 사용하고 있습니까? 당신의 settings.py를 공유하십시오
utkbansal

많은 타사 앱을 사용하고 있지만이 오류는 사이트 패키지의 다른 앱이 아니라 "django / apps / registry.py"에서 발생한다고 생각합니다.
Kishore K

1
ibrary가 아직 1.9를 지원하지 않기 때문에 django-crispy-forms와 비슷한 문제에 직면했습니다. 따라서 이것은 지원되지 않는 앱일 수 있습니다.
utkbansal

1
나는 그 패키지를 사용하고 있지 않습니다. 죄송합니다 내가 틀렸다면 패키지와 관련된 경우 추적이 사이트 패키지의 해당 앱을 가리킬 것입니다.
Kishore K

같은 payu 1.9 지원하지
GrvTyagi

답변:


125

설정 파일의 맨 위에 다음 행을 추가하십시오.

import django
django.setup()

이렇게해도 설치된 앱 목록에서 타사 애플리케이션을 하나씩 제거하는 데 도움이되지 않는 경우.


8
시도했지만 "django.core.exceptions.ImproperlyConfigured : SECRET_KEY 설정은 비어 있지 않아야합니다."라는 오류가 발생했습니다. 설정 파일에 SECRET_KEY가 있지만.
Kishore K

11
SECRET_KEY를 선언 시도 하기 전에 언급 한 라인, 같은 : SECRET_KEY =이 : 또 다른 오류로 지금 .... 나를 위해 일한 장고 django.setup () 'MY SECRET KEY'수입
Duda 보낸 노게이라

1
이것은 "독립 실행 형 스크립트에서 Django 모델 객체에 어떻게 액세스합니까?"라는 질문에 대한 훌륭한 대답입니다. :-) 위의 코드를 실행하기 전에 os.environ.setdefault ( "DJANGO_SETTINGS_MODULE", "your.settings")를 수행해야합니다.
AdvilUser

1
설정에서 작동하지 않았지만 독립 실행 형 스크립트에서 작동합니다. 이 예외는 독립형 Python 스크립트에서 django.setup ()을 호출하는 것을 잊은 경우에도 발생합니다. docs.djangoproject.com/en/1.10/ref/applications/...
앙드레 아르테에게

30
django.setup()독립 실행 형 스크립트에서 사용하기위한 것입니다. 설정에 넣지 말아야합니다
Alasdair Alasdair 2018

37

내 모델 __init__.py파일 중 하나에 작성된 사용자 지정 함수였습니다 . 오류가 발생했습니다. 이 기능을 옮겼을 때 __init__.py작동했습니다.


3
여기도 동일하고 이동도 고정됩니다.
Brachamul 2015

이 파일에서 주석 처리 된 함수도이 오류를 일으킬 수 있다는 점에 유의할 필요가 있습니다.
Autobots의 B-Tron

25

내 문제는 호출하기 전에 Django 모델을 가져 오려고했다는 것입니다. django.setup()

이것은 나를 위해 일했습니다.

import django
django.setup()

from myapp.models import MyModel

위의 스크립트는 프로젝트 루트 폴더에 있습니다.


스크립트를 실행할 때이 문제에 직면하여 해결되었습니다.
거의 초보자 인

14

내가 만든 때 내 경우, 오류가 발생했습니다 python manage.py makemigrationsDjango 2.0.6.

해결책은 실행 python manage.py runserver하고 실제 오류 (단지 누락 된 환경 변수)를 확인하는 것입니다.


13

당신이 응용 프로그램을 추가 할 때이 오류가 발생할 수 있습니다 INSTALLED_APPS 에서 settings.py파일하지만 당신은 응용 프로그램이 컴퓨터에 설치되어 있지 않습니다. 두 가지 해결책이 있습니다.

  1. Installpip우분투 와 같은 패키지 관리자를 사용하는 앱
  2. 또는 설치된 앱을 settings.py파일 에 주석 처리

이 오류는 virtual environment프로젝트에 대해 생성 한 사용자 가 아닌 경우에도 발생할 수 있습니다.



5

저에게 문제는 파일 INSTALLED_APPS에서 모델을 가져 오는 앱을 가져오고 있다는 사실 에서 발생했습니다.__init__.py

나는 가지고 있었다 :

settings.py

INSTALLED_APPS = [
    ...
    'myapp',
    ...
]

myapp.__init__.py

from django.contrib.sites.models import Site

주석 import models에서 myapp.__init__.py작동했다 :

# from django.contrib.sites.models import Site

비슷한 문제가 있습니다. 하지만 제 경우에는 수입이 필요합니다. 어떻게 하시겠습니까?
JohnnyQ

init 에서 모델을 가져 오지 않도록 항상 리팩터링 할 수 있습니다 . 확실히 작동하는 옵션은 앱을 가져 오는 파일을 리팩터링하는 것이지만 상당히 많은 변경이있을 수 있습니다. 결국 내가해야 할 일 이었어요!
Albyorix

@JohnnyQ와 같은 문제입니다. 1.8에서는 잘 작동하지만 1.9에서는 중단됩니다. 어딘가에 관련 문서가 있습니까? 제 경우에는 django.contrib.auth.models에서 사용자를 가져 오기 때문에 예외가 발생합니다
Vinod

여기 stackoverflow.com/questions/59927122/… 별도의 질문에서 이것에 대해 물었고 대답을 얻었습니다. 요점, 다른 방법은 없지만 리팩터링
Vinod

4

맨 위에있는 django.setup ()은 스크립트를 명시 적으로 실행하는 동안 작동하지 않습니다. 설정 파일 하단에 이것을 추가했을 때 내 문제가 해결되었습니다.

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
import sys
if BASE_DIR not in sys.path:
    sys.path.append(BASE_DIR)
os.environ['DJANGO_SETTINGS_MODULE'] =  "igp_lrpe.settings"
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "igp_lrpe.settings")
import django
django.setup()

Pycharm 셸을 사용하고 import djangodjango.setup(). 문제가 해결되었습니다.
Seyed Hasan Mousavi

2

나를 위해 주석 처리

'grappelli.dashboard',
'grappelli',

INSTALLED_APPS에서 작동 함


나를 위해 그것은 우연히 'one_third_pary_app,'대신 'one_third_pary_app',(위치에 유의하십시오), )
J0ANMM dec

2

실행하려고 할 때 오류가 발생합니다 test.py(전체 스크립트가 아니라 사용하고 싶지 않음 python manage.py test).

다음 방법이 저에게 효과적입니다.

import os
import django
if 'env setting':
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'YourRoot.settings')
    django.setup()
from django.test import TestCase
...

class SomeTest(TestCase):
    def test_one(self):  # <-- Now, I can run this function by PyCharm
        ...

    def test_two(self):
        ...

1

내 문제는 : django-reversion> = 1.8.7, <1.9

django 1.9.7의 경우 다음을 사용해야합니다. django-reversion == 1.10.0

django-cms 3.2를 3.3으로 업그레이드했고 앱에 주석을 달고 다시 주석을 제거하여 찾았습니다.

여기에서 정답 : https://stackoverflow.com/a/34040556/2837890


1

이 문제는 INSTALLED_APPS를 잘못 작성하는 일관되지 않은 settings.py에서도 관찰됩니다. 앱을 올바르게 포함하고 ","로 구분했는지 확인합니다.


1

장고 버전을 1.9로 변경해도 오류가 발생하지 않습니다. pip uninstall django pip install django==1.9


1

다음 과 같이 나머지 호출 토큰을 관리하기 위해 파일에 User가져 오기를 넣습니다.settings

# settings.py
from django.contrib.auth.models import User
def jwt_get_username_from_payload_handler(payload):
   ....

JWT_AUTH = {
    'JWT_PAYLOAD_GET_USERNAME_HANDLER': jwt_get_username_from_payload_handler,
    'JWT_PUBLIC_KEY': PUBLIC_KEY,
    'JWT_ALGORITHM': 'RS256',
    'JWT_AUDIENCE': API_IDENTIFIER,
    'JWT_ISSUER': JWT_ISSUER,
    'JWT_AUTH_HEADER_PREFIX': 'Bearer',
}
REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
       'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
    ),
}

그 순간 Django libs는 아직 준비되지 않았기 때문입니다. 따라서 import함수 내부에 삽입하고 작동하기 시작했습니다. 서버가 시작된 후 함수를 호출해야합니다.


0

내 경우 내 설정 중 하나 인 'CORS_ORIGIN_WHITELIST'는 settings.py 파일에 설정되었지만 내 .env 파일에서는 사용할 수 없습니다. 따라서 특히 .env에 연결된 설정을 확인하는 것이 좋습니다.


0

다른 사람들이 말했듯이 이것은에 나열된 앱을 설치하지 않았을 때 발생할 수 있습니다 INSTALLED_APPS.

제 경우 manage.py에는 예외를 기록하려고 시도했지만 앱이 아직 초기화되지 않아 실패한 렌더링 시도로 이어졌습니다. 특별한 렌더링없이 예외 의 except절 을 주석 처리 manage.py하여 혼동 오류를 방지했습니다.

# Temporarily commenting out the log statement.
#try:
    execute_from_command_line(sys.argv)
#except Exception as e:
#    log.error('Admin Command Error: %s', ' '.join(sys.argv), exc_info=sys.exc_info())
#    raise e

0

나는 많은 것을 시도했지만 Django를 1.8.18로 다운 그레이드해야만이 문제가 해결되었습니다.

pip install django==1.8.18

실패한 설치된 앱 중 하나이지만 어떤 앱을 찾을 수 없습니다.


0

실행하려고하면 오류가 발생합니다.

python manage.py makemigrations

나는 많은 것을 시도했고 "settings.py"- "INSTALLED_APPS"에 대한 몇 가지 참조를 추가했다는 것을 깨달았습니다.

거기에 작성한 내용이 올바른지 확인하십시오. 제 실수는 ".model"이었습니다. ".app"대신

그 실수를 수정했고 지금 작동하고 있습니다.


-1

파티에 늦었지만 그래 펠리는 내 실수의 원인이기도했다. pypi에서 호환되는 버전을 찾아서 수정했습니다.


-1

가상 환경을 활성화 해보십시오. 제 경우에는 git 명령 줄 도구를 사용합니다.

source scripts/activate

내 문제를 해결합니다.


-1

에서 모델 객체에 액세스하는 동안이 오류가 발생했습니다 apps.py.

class QuizConfig(AppConfig):
name = 'quiz'

def ready(self):
    print('===============> Django just started....')
    questions_by_category = Question.objects.filter(category=2) # <=== Guilty line of code.

Question앱이 모델 클래스를로드하기 전에 액세스하려고 하면 오류가 발생했습니다.


Question이 AppConfig의 models.py에 모델이 정의되어 있습니까?
Gustavo_fringe

예, 거기에 정의되어 있습니다
Ojonugwa Jude Ochalifu

-2

setting.py 파일 채우기가 정확하면 manage.py 파일을 받으려고 시도 할 수 있습니다. main method에서 danjgo.setup ()을 호출하십시오. 그런 다음 manage.py를 실행하고 마지막으로 프로젝트를 다시 실행하면 문제가 사라질 수 있습니다.


-2

앱 패키지의 "admin"모듈에서 패키지의 "models"모듈에서 생성 된 모든 데이터베이스를 등록합니다.

"models"모듈에 다음과 같이 정의 된 데이터베이스 클래스가 있다고 가정합니다.

class myDb1(models.Model):
    someField= models.Charfiled(max_length=100)

따라서이를 관리 모듈에 다음과 같이 등록해야합니다.

from .models import myDb1
admin.site.register(myDb1)

오류가 해결되기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.