Django 1.7 थ्रो django.core.exception.AppRegistryNotReady: मॉडल अभी तक लोड नहीं किए गए हैं


166

यह मेरे विंडोज़ सिस्टम पर ट्रेसबैक है।

Traceback (most recent call last):
  File "D:\AMD\workspace\steelrumors\manage.py", line 9, in <module>
    django.setup()
  File "D:\AMD\Django\django-django-4c85a0d\django\__init__.py", line 21, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "D:\AMD\Django\django-django-4c85a0d\django\apps\registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "D:\AMD\Django\django-django-4c85a0d\django\apps\config.py", line 197, in import_models
    self.models_module = import_module(models_module_name)
  File "C:\Python27\lib\importlib\__init__.py", line 37, in import_module
    __import__(name)
  File "C:\Python27\lib\site-packages\registration\models.py", line 15, in <module>
    User = get_user_model()
  File "D:\AMD\Django\django-django-4c85a0d\django\contrib\auth\__init__.py", line 135, in get_user_model
    return django_apps.get_model(settings.AUTH_USER_MODEL)
  File "D:\AMD\Django\django-django-4c85a0d\django\apps\registry.py", line 199, in get_model
    self.check_models_ready()
  File "D:\AMD\Django\django-django-4c85a0d\django\apps\registry.py", line 131, in check_models_ready
    raise AppRegistryNotReady("Models aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.

और मेरा प्रबंधतंत्र इस तरह दिखता है:

import os
import sys
import django

if __name__ == "__main__":

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "steelrumors.settings")
    django.setup()
    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

मुझे यह त्रुटि तब मिली जब मैं Django 1.7 में पंजीकरण ऐप का उपयोग करने की कोशिश कर रहा हूं


1
आपके पास निर्देशिका है django-django-4c85a0d; 4c85a0dहोता है एक (गैर स्थिर) Django प्रतिबद्ध हैश। मुझे विश्वास नहीं है कि आप वास्तव में Django 1.7 (मेरे जवाब cf) का उपयोग कर रहे हैं
क्रिस्टियन ग्लास

क्या आपने कभी अपनी समस्या का समाधान किया?
निक स्पेसक

इससे भी संबंधित हो सकता है venv। Venv निर्देशिका को फिर से बनाना मेरे लिए इसे तय किया। `` mv venv venv_old virtualenv venv स्रोत ।/venv/bin/activate पाइप स्थापित करें -r आवश्यकताएँ। अगला `` `
थॉमस - BeeDesk 20

1
मैं इस तरह से कुछ त्रुटि को पूरा करता हूं, जब मैं अपने मैक पर सेटिंग में LOGGING जोड़ता हूं, यह इसलिए है क्योंकि मैं /var/log/xx/debug.log पर एक लॉग फ़ाइल बनाता हूं और इसकी अनुमति नहीं है, इसलिए मैं sudo का उपयोग करता हूं चलाने वाला, और हमेशा के लिए ठीक है। कुछ लोगों की मदद करें
gkiwi

दौड़ते समय मैंने यह त्रुटि देखी docker-compose exec ...। मुद्दा यह था कि मैं कमांड डॉकटर-कम्पोज़ एक्ज़क्यूट के लिए आवश्यक पर्यावरण चर नहीं दे रहा था ।
मैथ्यू हेगार्टी

जवाबों:


59

यह हमारे और इन लोगों के लिए इसका हल है :

हमारा प्रोजेक्ट Django 1.4 के साथ शुरू हुआ, हम 1.5 और फिर 1.7 पर गए। हमारे wsgi.py इस तरह देखा:

import os

from django.core.handlers.wsgi import WSGIHandler

os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
application = WSGIHandler()

जब मैंने 1.7 स्टाइल WSGI हैंडलर को अपडेट किया:

import os

from django.core.wsgi import get_wsgi_application

os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
application = get_wsgi_application()

अब सब कुछ काम करता है।


1
मैं @wim के संपादन से सहमत नहीं हूं, इसलिए नहीं कि मुझे लगता है कि हमें अनावश्यक आयात को छोड़ देना चाहिए, बल्कि इसलिए कि मैं एक उदाहरण दे रहा था कि ऑटोगेनरेटेड wsgi.py पहले जैसा दिखता था, और जैसा मैंने कॉपी किया था, वैसा ही दिखता था 1.7 ऑटोजेनरेटेड wsgi.py से अंतर।
निक स्पेसक

1
ऑटोजेनरेटेड wsgi.pyफ़ाइल कभी भी इसमें नहीं होती है import sys। 1.4 में नहीं, 1.5 में नहीं और 1.7 में नहीं। यदि आपके पास यह वहां था, तो इसे किसी व्यक्ति द्वारा मैन्युअल रूप से जोड़ा गया था - यह django-admin startproject द्वारा नहीं जोड़ा गया है।
wim

जानकर अच्छा लगा, मेरी गलती (और खराब मेमोरी)। जब मैंने इसे बनाया था तब से ही यह समय हो गया था लेकिन मुझे पूरा यकीन था कि उस समय मैं व्यवहार में निर्मित दस्तावेज का प्रयास कर रहा था।
निक स्पेसक

236

इन आदेशों को चलाने से मेरी समस्या हल हो गई ( इस उत्तर का श्रेय ):

import django
django.setup()

हालांकि मुझे यकीन नहीं है कि मुझे इसकी आवश्यकता क्यों है। टिप्पणियों की सराहना की जाएगी।


12
क्षमा करें, बस जो मैंने पढ़ा है उसे django 1.7 में परिवर्तन को तोड़ने के बारे में जारी नोट्स। docs.djangoproject.com/en/dev/releases/1.7/… । असल में, Django में इंस्टॉल किए गए ऐप को लोड करने का एक नया तरीका है। यदि आप Django को पायथन स्क्रिप्ट से लोड करते हैं (जैसे मैं अपने कस्टम यूनिट परीक्षणों में था), तो आगे बढ़ने और कॉलिंग सेटअप () करने से पहले कुछ आरंभीकरण की आवश्यकता है। उस के अलावा, टीम के लिए, मेरे 1.6.2 से 1.7.1 अपग्रेड एक घंटे के असली काम के लायक लगते हैं।
JL Peyret

12
मैं उपरोक्त आदेश कहां चलाऊं? मैं इसे .py फ़ाइल में या क्या जोड़ूँ?
खोई

1
आपको इसे उसी संदर्भ में चलाना चाहिए जिसमें त्रुटि होती है
निम्मो

3
यह योग्यता के लिए पर्याप्त उत्थान है जो सही उत्तर के रूप में चिह्नित किया जा रहा है
acid_crucifix

इसने एक समस्या को भी हल किया जो मुझे कमांड-लाइन अपडेट स्क्रिप्ट में था जो 1.7 में स्थानांतरित हो गया।
जेसन चैंपियन

58

मुद्दा आपके पंजीकरण ऐप में है। ऐसा लगता है Django पंजीकरण कॉल get_user_module()में models.pyएक मॉड्यूल स्तर पर (जब मॉडल अभी भी आवेदन पंजीकरण की प्रक्रिया द्वारा लोड किए जा रहे हैं)। यह अब काम नहीं करेगा:

try:
    from django.contrib.auth import get_user_model
    User = get_user_model()
except ImportError:
    from django.contrib.auth.models import User    

मैं इस मॉडल फ़ाइल को केवल get_user_model()तरीकों के अंदर (और मॉड्यूल स्तर पर नहीं) कॉल करने के लिए बदल दूंगा और FKs में कुछ इस तरह का उपयोग करूंगा:

user = ForeignKey(settings.AUTH_USER_MODEL)

BTW, django.setup()आपकी manage.pyफ़ाइल में कॉल की आवश्यकता नहीं होनी चाहिए , यह आपके लिए कहा जाता है execute_from_command_line। ( स्रोत )


इसे अंदर if __name__ == '__main__':रखना मेरे लिए काम करता है लेकिन मुझे नहीं पता कि यह एक अच्छा समाधान है या नहीं।
उमैर ए।

@ न्यूट्रलाइज़र यकीन नहीं है कि आप ऐसा कैसे कर रहे हैं, लेकिन यह काम नहीं करना चाहिए क्योंकि django इस मॉड्यूल को आयात कर रहा है। संभवत: आप उपयोगकर्ता मॉडल को बिल्कुल भी आयात नहीं करके गोलाकार डिप से बच रहे हैं।
गोंज

1
मेरा मतलब है कि उन पंक्तियों को नाम जाँच के अंदर रखें। यह निष्पादन को लंघन कर सकता है। मैंने पर्याप्त परीक्षण नहीं किए हैं।
उमर ए।

18

बस एक ही मुद्दे का सामना करना पड़ा। समस्या django-registrationdjango 1.7 उपयोगकर्ता मॉडल के साथ असंगत होने के कारण है ।

एक साधारण फिक्स कोड की इन लाइनों को अपने स्थापित django-registrationमॉड्यूल में बदलना है ::

try:
    from django.contrib.auth import get_user_model
    User = get_user_model()
except ImportError:
    from django.contrib.auth.models import User  

सेवा::

from django.conf import settings
try:
    from django.contrib.auth import get_user_model
    User = settings.AUTH_USER_MODEL
except ImportError:
    from django.contrib.auth.models import User 

मेरा .venv/local/lib/python2.7/site-packages/registration/models.py(virtualenv) पर है


7
आप इसके बजाय django-registration-redux का उपयोग कर सकते हैं। इसे अपडेट किया गया है और कांटा बना हुआ है: github.com/macropin/django-registration
TJL

1
django-registration-reduxमेरे लिए मुद्दा तय किया (मैं ओपी के रूप में बिल्कुल वैसा ही था)
पियरे डी लेसपिन

1
अगर कोई Django 1.8 पर इससे जूझ रहा था, तो यह वहां भी लागू होता है।
एंड्रयू स्कस्टर

14

यह मेरे लिए Django 1.9 के लिए काम करता है। पायथन स्क्रिप्ट को निष्पादित करने के लिए Django परियोजना की जड़ में था।

    import django 
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PROJECT_NAME.settings")
    django.setup()
    from APP_NAME.models import *

PROJECT_NAME और APP_NAME को अपने पास सेट करें


1
इससे मेरा काम बनता है। लेकिन मुझे नहीं पता कि हमें इस कोड को क्यों चलाना चाहिए क्योंकि हमने पहले ही अपनी wsgi फाइल में इनका उल्लेख किया है।
श्री कोड

5

एक अन्य विकल्प यह है कि आपके पास INSTALLED_APPS में एक डुप्लिकेट प्रविष्टि है। इस त्रुटि को मैंने दो अलग-अलग ऐप के लिए परीक्षण किया। जाहिरा तौर पर यह कुछ नहीं है Django के लिए जाँच करता है, लेकिन फिर किसने मूर्खतापूर्ण रूप से एक ही ऐप को दो बार सूची में डाला। मैं, वह कौन है।


2

क्या आपके पास पायथन वर्चुअल वातावरण है जिसे आपको प्रबंधित करने से पहले दर्ज करने की आवश्यकता है?

मैं स्वयं इस त्रुटि में भाग गया, और यही समस्या थी।


2

मैं इस मुद्दे में भाग गया जब मैं djangocms का उपयोग करता हूं और एक प्लगइन जोड़ा (मेरे मामले में: djangocms-cascade)। बेशक मुझे INSTALLED_APPS में प्लगइन जोड़ना था। लेकिन आदेश यहां महत्वपूर्ण है।

'Cms' से पहले 'cmsplugin_cascade' लगाने से समस्या हल हो गई।


1
आदेश ने बात की:cms, mptt, menus, sekizai, filer, easy_thumbnails
ब्लेकवि

2

यदि आप django 1.7 का उपयोग कर रहे हैं तो django-registration-redux == 1.1 के बजाय django-registration, को इंस्टॉल करें


0

./manage.py migrate

इससे मेरी समस्या हल हो गई


यह प्रश्न का उत्तर प्रदान नहीं करता है। किसी लेखक से स्पष्टीकरण मांगने या उसका अनुरोध करने के लिए, उनके पोस्ट के नीचे एक टिप्पणी छोड़ दें। - रिव्यू से
जॉर्ज जेड।

@GeorgeZ। यह सवाल का जवाब करने की कोशिश की तरह दिखता है, और जाहिरा तौर पर समस्या हल जब यह में इस पोस्टर दौड़ा - यहां तक कि अगर आपको लगता है यह गलत है या, और अधिक सविस्तार किया जाना चाहिए सवाल का जवाब देने के लिए एक वास्तविक प्रयास समीक्षा से नहीं हटाया जाना चाहिए
CertainPerformance

-1

आपका manage.py"गलत" है; मुझे नहीं पता कि आपको यह कहाँ से मिला है, लेकिन यह 1.7 नहीं है manage.py- क्या आप कुछ फंकी प्री-रिलीज़ बिल्ड या कुछ का उपयोग कर रहे थे?

manage.pyनीचे दिए गए अनुसार, पारंपरिक और अपने काम को रीसेट करें :

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.