Django อัปเกรดเป็น 1.9 ข้อผิดพลาด“ AppRegistryNotReady: แอปยังไม่โหลด”


93

เมื่ออัปเกรดเป็น django 1.9 จาก 1.8 ฉันได้รับข้อผิดพลาดนี้ ฉันตรวจสอบคำตอบสำหรับคำถามที่คล้ายกัน แต่ฉันไม่คิดว่านี่เป็นปัญหากับแพ็คเกจหรือแอพของบุคคลที่สาม

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
ฉันประสบปัญหาคล้ายกันกับ django-framed-form เนื่องจาก ibrary ยังไม่รองรับ 1.9 ดังนั้นนี่อาจเป็นแอปที่ไม่รองรับ
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 = 'MY SECRET KEY' นำเข้า django django.setup () มันใช้งานได้สำหรับฉัน .... ตอนนี้มีข้อผิดพลาดอื่น :)
Duda Nogueira

1
นี่เป็นคำตอบที่ดีสำหรับคำถาม: "ฉันจะเข้าถึงวัตถุโมเดล Django จากสคริปต์แบบสแตนด์อโลนได้อย่างไร" :-) ก่อนรันโค้ดด้านบนคุณจะต้องทำ: os.environ.setdefault ("DJANGO_SETTINGS_MODULE", "your.settings")
AdvilUser

1
ไม่ทำงานกับการตั้งค่า แต่ใช้งานได้กับสคริปต์แบบสแตนด์อโลนของฉัน ข้อยกเว้นนี้ยังเกิดขึ้นหากคุณลืมเรียก django.setup () ในสคริปต์ Python แบบสแตนด์อโลน docs.djangoproject.com/th/1.10/ref/applications/…
André Duarte

30
django.setup()มีไว้สำหรับใช้ในสคริปต์แบบสแตนด์อะโลน คุณไม่ควรวางไว้ในการตั้งค่า
Alasdair

37

ฉันจะเขียนฟังก์ชันที่กำหนดเองไว้ใน__init__.pyไฟล์โมเดลของฉัน มันเป็นสาเหตุของข้อผิดพลาด เมื่อฉันย้ายฟังก์ชั่นนี้จากที่__init__.pyทำงาน


3
เหมือนกันที่นี่ย้ายมันคงเกินไป
Brachamul

ที่น่าสังเกตว่าฟังก์ชันที่แสดงความคิดเห็นในไฟล์นี้อาจทำให้เกิดข้อผิดพลาดนี้ได้เช่นกัน
B-Tron of the Autobots

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. Install แอพที่ใช้ตัวจัดการแพ็คเกจเช่น pipในอูบุนตู
  2. หรือแสดงความคิดเห็นเกี่ยวกับแอพที่ติดตั้งในไฟล์ settings.pyไฟล์

ข้อผิดพลาดนี้อาจเกิดขึ้นหากคุณไม่ได้อยู่ในvirtual environmentที่ที่คุณอาจสร้างไว้สำหรับโครงการของคุณ


5

ลองลบsettings.LOGGINGdictConfig ทั้งหมดแล้วรีสตาร์ทเซิร์ฟเวอร์ หากได้ผลให้เขียนการตั้งค่าใหม่ตามเอกสาร v1.9

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


ขอบคุณที่ใช้งานได้ สำหรับฉันฉันใช้ไฟล์การตั้งค่าของ linux บน windows ดังนั้นจึงมี/var/logเส้นทาง logfile ซึ่งทำให้เกิดข้อผิดพลาดนี้
pratibha

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

คุณสามารถที่จะหลีกเลี่ยง refactor รุ่นนำเข้าจากinit ตัวเลือกที่ใช้ได้ผลอย่างแน่นอนคือการปรับโครงสร้างไฟล์ที่นำเข้าแอปของคุณ แต่อาจมีการเปลี่ยนแปลงที่ค่อนข้างหนัก ในที่สุดก็เป็นสิ่งที่ฉันต้องทำ!
Albyorix

ปัญหาเดียวกับ @JohnnyQ ทำงานได้ดีใน 1.8 แต่แตกใน 1.9 มีเอกสารที่เกี่ยวข้องอยู่ที่ไหนสักแห่ง? ข้อยกเว้นเกิดขึ้นเนื่องจากการนำเข้าผู้ใช้จาก django.contrib.auth.models ในกรณีของฉัน
Vinod

เคยถามเกี่ยวกับเรื่องนี้ในคำถามแยกต่างหากที่นี่stackoverflow.com/questions/59927122/…และได้รับคำตอบ Gist ไม่มีทางอื่นนอกจาก refactor
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 shell และพิมพ์import djangoและdjango.setup(). ปัญหาได้รับการแก้ไขแล้ว
Seyed Hasan Mousavi

2

สำหรับฉันแสดงความคิดเห็น

'grappelli.dashboard',
'grappelli',

ใน INSTALLED_APPS ใช้งานได้


สำหรับฉันมันเป็นเพียงการบังเอิญมี'one_third_pary_app,'แทน'one_third_pary_app',(สังเกตตำแหน่งของ,)
J0ANMM

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

นอกจากนี้ยังพบปัญหานี้สำหรับ settings.py ที่ไม่สอดคล้องกันเนื่องจากการเขียน INSTALLED_APPS ไม่ถูกต้องตรวจสอบว่าคุณรวมแอปอย่างถูกต้องหรือไม่และคั่นด้วย ","


1

เมื่อฉันเปลี่ยนเวอร์ชัน django เป็น 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

สายไปงานปาร์ตี้ แต่ Grappelli ก็เป็นสาเหตุของความผิดพลาดของฉันเช่นกัน ฉันค้นหาเวอร์ชันที่เข้ากันได้บน pypi และแก้ไขให้ฉัน


-1

ลองเปิดใช้งาน env เสมือน ในกรณีของฉันใช้เครื่องมือบรรทัดคำสั่ง 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กำหนดไว้ใน models.py ของ AppConfig นี้หรือไม่
Gustavo_fringe

ใช่มันถูกกำหนดไว้ที่นั่น
Ojonugwa Jude Ochalifu

-2

หากการเติมไฟล์ setting.py ของคุณถูกต้อง, คุณสามารถลองมาถึงไฟล์ Manage.py ดำเนินการเรียก danjgo.setup () ในวิธีหลัก จากนั้นเรียกใช้ Manage.py เรียกใช้โปรเจ็กต์อีกครั้งในที่สุดปัญหาอาจหายไป


-2

ในโมดูล "ผู้ดูแลระบบ" ของแพ็กเกจแอปของคุณให้ลงทะเบียนฐานข้อมูลทั้งหมดที่สร้างในโมดูล "โมเดล" ของแพ็กเกจ

สมมติว่าคุณมีคลาสฐานข้อมูลที่กำหนดไว้ในโมดูล "แบบจำลอง" เป็น:

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.