programing

Django가 1.9로 업그레이드되었습니다. "AppRegistryNotReady: Apps가 아직 로드되지 않았습니다." 오류가 발생했습니다.

subpage 2023. 7. 23. 14:16
반응형

Django가 1.9로 업그레이드되었습니다. "AppRegistryNotReady: Apps가 아직 로드되지 않았습니다." 오류가 발생했습니다.

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'에 설치된 앱을 수정했습니다.작자의

다음 행을 설정 파일의 맨 위에 추가합니다.

import django
django.setup()

설치된 응용프로그램 목록에서 타사 응용프로그램을 하나씩 제거하는 데 도움이 되지 않는 경우.

내 모델 중 하나에 사용자 지정 기능을 기록했습니다.__init__.py파일입니다. 오류의 원인입니다.가 이 기능을 기이때동을에서 때.__init__.py효과가 있었습니다.

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

이것은 저에게 효과가 있었습니다.

import django
django.setup()

from myapp.models import MyModel

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

가 저의경, 오가발습다니를 만들 때 했습니다.python manage.py makemigrationsDjango 2.0.6.

솔루션은 실행하는 것이었습니다.python manage.py runserver실제 오류(단순히 누락된 환경 변수)를 확인합니다.

는 이오앱추때발수있에서 할 때 할 수 .INSTALLED_APPS에 시대에settings.py파일은 있지만 컴퓨터에 해당 앱이 설치되어 있지 않습니다.두 해결책이 : 가 지 있 해 이 니 다 습 두 책 결 다 니 ▁you 있 습 :

  1. Install▁managers▁using▁like▁package▁that▁app와 같은 패키지 관리자를 사용하는 앱.pip
  2. .settings.py

또한 이 오류는 사용자가 사용 중이 아닌 경우에도 발생할 수 있습니다.virtual environment프로젝트를 위해 만들었을 수도 있습니다.

이것은 아직 언급되지 않았지만 오류의 일반적인 원인입니다.모델을 사용하는 시작 코드를 지정하면 오류가 발생합니다.만약 당신이 이 접근법을 따르고 그것을 당신의 삶에 넣는다면,AppConfig당신은 파일의 맨 위에 모델을 가져올 수 없고, 내부에.ready()를 들어다음과 .예를 들어 다음과 같습니다.

# works as models are imported in the ready() method
from django.apps import AppConfig

class MatcherConfig(AppConfig):
    name = 'matcher'
    verbose_name = 'Match-Making'
    def ready(self):
        from matcher.background_tasks import close_timeout_games
        from matcher.models import FourPlayerGame
        # check if a player is not responding every 5 seconds
        close_timeout_games(FourPlayerGame, repeat=5)

그러나 다음은 잘못된 것입니다.

# won't work as models are imported at the beginning
from django.apps import AppConfig
from matcher.background_tasks import close_timeout_games
from matcher.models import FourPlayerGame

class MatcherConfig(AppConfig):
    name = 'matcher'
    verbose_name = 'Match-Making'
    def ready(self):
        # check if a player is not responding every 5 seconds
        close_timeout_games(FourPlayerGame, repeat=5)

자세한 내용은 이 답변을 참조하십시오.


먼저 장고를 가져오고 실행합니다.모델을 가져오기 전에 setup(설치)


위의 답변은 모두 좋지만 한 사람이 할 수 있는 간단한 실수가 있습니다. (사실 저의 경우는 그랬습니다.)

전화하기 전에 앱에서 장고 모델을 가져왔습니다.django.setup()그래서 적절한 방법은...

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'first_project.settings')

import django
django.setup()

그렇다면 다른 어떤 수입품이라도.

from faker import Faker
import random
# import models only after calling django.setup()
from first_app.models import Webpage, Topic, AccessRecord

저에게, 문제는 제가 앱을 가져온다는 사실에서 비롯되었습니다.INSTALLED_APPS그 자체가 모델을 수입하는 것이었습니다.__init__.py

내가 가지고 있던:

settings.py

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

myapp.__init__.py

from django.contrib.sites.models import Site

을 다는 것import modelsmyapp.__init__.py 동했습니다작다.

# from django.contrib.sites.models import Site

전제 시도거체 .settings.LOGGINGdictConfig를 다시 합니다.문제가 해결되면 v1.9 설명서에 따라 설정을 다시 작성합니다.

https://docs.djangoproject.com/en/1.9/topics/logging/ #http://examples

실수로 일반 Python 쉘을 시작했는데 거기서 Django 모델을 가져오려고 하면 이 오류가 발생할 수 있습니다.

에 대신다사합야니다해용을음을 사용해야 .python manage.py shell그것 때문에

나를 위한 코멘트 아웃.

'grappelli.dashboard',
'grappelli',

설치됨_APPS 작동됨

스크립트를 명시적으로 실행하는 동안에는 위에 있는 django.django가 작동하지 않습니다.설정 파일 하단에 추가하면 문제가 해결되었습니다.

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()

제가 넣었습니다.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',
    ),
}

왜냐하면 그 순간, 장골립스는 아직 준비되지 않았기 때문입니다.그러므로, 저는 다음을 넣었습니다.import기능 안에서 작동하기 시작했습니다.는 서버가 시작된 후 .

실행하려고 하면 해당 오류가 발생합니다.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.8.7,<1.9

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

저는 django-cms 3.2에서 3.3으로 업그레이드되었고, 앱에 댓글을 달았다가 다시 댓글을 달아서 찾았습니다.

정답은 https://stackoverflow.com/a/34040556/2837890 입니다.

이 문제는 settings.py 에서 INSTALLED_를 잘못 작성한 경우에도 발견됩니다.APPS, 앱을 올바르게 포함하고 ","로 구분했는지 확인합니다.

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

저는 settings.py 에 이 코드가 있기 때문에 그런 문제로 곤경에 처했습니다.

내 앱 가져오기

제가 이 코드 문제를 해결했을 때, 저는 당신의 settings.py 을 확인하고 그러한 코드를 제거하는 것을 추천합니다.

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

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

저 같은 경우에는.manage.py예외를 기록하려고 시도하는 중이었고, 이로 인해 앱이 아직 초기화되지 않아 예외를 렌더링하지 못했습니다.코멘트 아웃을 함으로써.exceptmanage.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

저는 많은 것을 시도했지만, 장고를 1.8.18로 다운그레이드한 후에야 이 문제를 해결했습니다.

pip install django==1.8.18

설치된 앱 중 하나가 실패하고 있지만, 어떤 앱을 찾을 수 없었습니다.

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

python manage.py makemigrations

저는 너무 많은 것을 시도했고 "settings.py " - "INSTALLED_APPs"에 몇 가지 참조를 추가했다는 것을 깨달았습니다.

당신이 거기에 쓴 것이 정확한지만 확인하세요.제 실수는 "app"이 아닌 "model"이었습니다.

그 실수를 바로 잡았고 지금은 작동하고 있습니다.

이 문제가 발생하여 asgi.py 에 뿌리를 두고 있습니다. 아래 모듈을 로드했습니다.

from channels.auth import AuthMiddlewareStack 

하지만 ProtocolTypeRouter에서는 사용하지 않았습니다. AuthMiddlewareStack 모듈을 호출할 때 웹 소켓이나 다른 프로토콜을 사용해야 합니다.

미래에 이 문제를 발견할 수 있는 다른 사람들을 위해:

Python 3.8을 실행하고 멀티프로세싱 패키지를 사용하려고 할 때 이 문제가 발생하면 하위 처리가 '포킹'이 아닌 '스폰딩'되었기 때문일 가능성이 있습니다.기본 프로세스 시작 방법이 '포크'에서 '스폰'으로 변경되는 Mac OS의 Python 3.8과의 변경 사항입니다.이것은 장고와 관련된 알려진 문제입니다.

해결 방법:

import multiprocessing as mp
mp.set_start_method('fork')

init 파에함로수고려할발드때생니습다했문제가이하를일(▁(▁in다▁i▁file▁functioninit니▁a▁problem발▁when습▁i▁the생▁init했▁this▁faced)에 함수를 하려고 할 때 이 문제가 발생했습니다.__init__.py설정 패키지의 )입니다.

이 오류의 원인

django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet

즉, 설이로기전예다른모듈에되드정예▁(모(듈▁another른:)을 하고 싶었습니다.rest_framework).

package( 설정 패키지, 설정 패키지)의 다른 모듈(.common.py), 그리고 그것은 문제를 해결했습니다.

오류가 ㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜappregistrynotready실수로 등록한 것입니까? User modelapp.pyadmin.py

이런 식으로 보입니다.

app.py

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from .models import User

@admin.register(User)
class UserAdmin(BaseUserAdmin):
    pass

저는 사용할 때 같은 문제에 직면했습니다.

from django.urls import reverse

솔루션:

from django.urls import reverse_lazy

파티에 늦었지만, 그라펠리도 제 실수의 원인이었습니다.저는 pypi에서 호환 가능한 버전을 찾아봤고 그것이 저를 위해 고쳐주었습니다.

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

source scripts/activate

내 문제를 해결합니다.

에서모개액체세동안이발다니습생에 있는 모델 이 했습니다.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앱이 로드되기 전에 모델 클래스가 나에게 오류를 일으켰습니다.

언급URL : https://stackoverflow.com/questions/34114427/django-upgrading-to-1-9-error-appregistrynotready-apps-arent-loaded-yet

반응형