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 makemigrations
Django 2.0.6
.
솔루션은 실행하는 것이었습니다.python manage.py runserver
실제 오류(단순히 누락된 환경 변수)를 확인합니다.
는 이오앱추때발수있에서 할 때 할 수 .INSTALLED_APPS
에 시대에settings.py
파일은 있지만 컴퓨터에 해당 앱이 설치되어 있지 않습니다.두 해결책이 : 가 지 있 해 이 니 다 습 두 책 결 다 니 ▁you 있 습 :
Install
▁managers▁using▁like▁package▁that▁app와 같은 패키지 관리자를 사용하는 앱.pip
- .
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 models
myapp.__init__.py
동했습니다작다.
# from django.contrib.sites.models import Site
전제 시도거체 .settings.LOGGING
dictConfig를 다시 합니다.문제가 해결되면 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
예외를 기록하려고 시도하는 중이었고, 이로 인해 앱이 아직 초기화되지 않아 예외를 렌더링하지 못했습니다.코멘트 아웃을 함으로써.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
저는 많은 것을 시도했지만, 장고를 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 model
app.py
에 admin.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
'programing' 카테고리의 다른 글
오라클 프로시저의 이름을 바꾸는 방법 (0) | 2023.07.23 |
---|---|
sql query에서 single-quote를 double-quote로 대체하는 방법 - oracle 10g? (0) | 2023.07.23 |
64비트 Windows에 설치 도구 설치 (0) | 2023.07.23 |
PHP - If/else, for, for, for, while, curly brace 없이? (0) | 2023.07.23 |
잘못 정렬된 포인터를 유지하는 것이 잘 정의되어 있습니까? 포인터를 참조 취소하지 않는 한? (0) | 2023.07.23 |