Django, 1.9 hatası "AppRegistryNotReady: Uygulamalar henüz yüklenmedi."


93

1.8'den django 1.9'a yükselttiğimde bu hatayı aldım. Benzer sorular için cevapları kontrol ettim, ancak bunun herhangi bir 3. parti paket veya uygulamayla ilgili bir sorun olduğunu düşünmedim.

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' için Yüklü uygulamaları değiştirdim.


1
herhangi bir üçüncü taraf uygulaması kullanıyor musunuz? Lütfen ayarlarınızı paylaşın.py
utkbansal

Birçok üçüncü taraf uygulaması kullanıyorum, ancak bu hatanın site paketlerindeki diğer uygulamalardan değil, "django / apps / registry.py" dosyasından kaynaklandığına inanıyorum.
Kishore K

1
İbrary henüz 1.9'u desteklemediğinden, django-crispy-formları ile benzer bir sorunla karşılaştım. Bu, desteklenmeyen bir uygulama olabilir.
utkbansal

1
O paketi kullanmıyorum. Üzgünüm Eğer yanılıyorsam, eğer herhangi bir paketle ilgiliyse, izleme site paketlerinde o uygulamaya işaret edecek, değil mi?
Kishore K

Aynı payu 1.9'u desteklemiyor
GrvTyagi 25'16

Yanıtlar:


125

Bu satırları ayarlar dosyanızın en üstüne eklemeyi deneyin:

import django
django.setup()

Ve eğer bu, üçüncü taraf uygulamaları yüklü uygulamalar listenizden tek tek kaldırmaya çalışmanıza yardımcı olmazsa.


8
Denedim, ancak şu hatayı aldım "django.core.exceptions.ImproperlyConfigured: SECRET_KEY ayarı boş olmamalıdır." Ayarlar dosyasında SECRET_KEY olmasına rağmen.
Kishore K

11
SECRET_KEY'i belirtilen satırlardan ÖNCE bildirmeyi deneyin : SECRET_KEY = 'GİZLİ ANAHTARIM' import django django.setup () benim için çalıştı .... şimdi başka bir hatayla :)
Duda Nogueira

1
Bu şu soruya harika bir cevaptır: "Django model nesnelerine bağımsız bir komut dosyasından nasıl erişebilirim?" :-) Yukarıdaki kodu çalıştırmadan önce yapmanız gerekenler: os.environ.setdefault ("DJANGO_SETTINGS_MODULE", "your.settings").
AdvilUser

1
Ayarlar üzerinde çalışmadı ama bağımsız senaryom üzerinde çalışıyor. Tek başına bir Python betiğinde django.setup () öğesini çağırmayı unutursanız da bu istisna olur. docs.djangoproject.com/en/1.10/ref/applications/…
André Duarte

30
django.setup()bağımsız komut dosyalarında kullanım içindir. Ayarlara
Alasdair

37

Modeller __init__.pydosyamdan birinde yazılmış özel bir işlev olurdu . Hataya neden oluyordu. Bu işlevi __init__.pyondan taşıdığımda çalıştı.


3
Aynı burada, hareket ettirmek de sabit.
Brachamul

Bu dosyadaki açıklamalı işlevlerin de bu hataya neden olabileceğini belirtmek gerekir.
Autobot'lardan B-Tron

25

Sorunum, aramadan önce bir Django modelini içe aktarmaya çalışmamdı. django.setup()

Bu benim için çalıştı:

import django
django.setup()

from myapp.models import MyModel

Yukarıdaki komut dosyası, proje kök klasöründedir.


Bir komut dosyası çalıştırırken bu sorunla karşılaşıyordum, bu sorunu çözdü.
neredeyse başlangıç ​​seviyesi

14

Ben yaptığında Benim durumumda, hata oluştu python manage.py makemigrationsüzerinde Django 2.0.6.

Çözüm, python manage.py runserverçalışıp gerçek hatayı görmekti (bu sadece eksik bir ortam değişkeniydi).


13

Bu hata INSTALLED_APPS , settings.pydosyaya bir uygulama eklediğinizde ancak bu uygulama bilgisayarınızda yüklü olmadığında ortaya çıkabilir . İki çözümünüz var:

  1. Installpipubuntu'daki gibi paket yöneticilerini kullanan uygulama
  2. Veya settings.pydosyadaki yüklü uygulamayı yorumlayın

Bu hata, virtual environmentprojeniz için yaratmış olabileceğiniz içinde değilseniz de ortaya çıkabilir .



5

Benim için sorun INSTALLED_APPS, kendi __init__.pydosyasında bir model içe aktaran bir uygulamayı içe aktarmamdan kaynaklanıyordu.

Sahiptim :

settings.py

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

myapp.__init__.py

from django.contrib.sites.models import Site

dışında yorum import modelsiçinde myapp.__init__.pyçalışması yaptı:

# from django.contrib.sites.models import Site

Bende de benzer bir sorun var. Ama benim durumumda ithalata ihtiyacım var. Bunu nasıl yaptın?
JohnnyQ

Modelleri init'ten içe aktarmaktan kaçınmak için her zaman yeniden düzenleme yapabilirsiniz . Kesinlikle işe yarayacak bir seçenek, uygulamanızı içe aktaran dosyaları yeniden düzenlemek olabilir, ancak oldukça ağır değişiklikler olabilir. Sonunda, yapmam gereken buydu!
Albyorix

@JohnnyQ ile aynı sorun. 1.8'de iyi çalışıyor ancak 1.9'da kırılıyor. Etrafta bir yerde ilgili herhangi bir belge var mı? Benim durumumda istisna, Kullanıcının django.contrib.auth.models'ten içe aktarılmasından kaynaklanıyor
Vinod

Bunu ayrı bir soruda burada stackoverflow.com/questions/59927122/… sormuş ve cevabı almıştım. Ana fikir, yeniden düzenlemekten başka yolu yok
Vinod

4

Üstteki django.setup (), bir komut dosyasını açıkça çalıştırdığınızda çalışmayacaktır. Bunu ayarlar dosyasının altına eklediğimde sorunum çözüldü

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

I pycharm kabuk ve türünü kullanmak import djangove django.setup(). Problem çözüldü.
Seyed Hasan Mousavi

2

Benim için yorum yapmak

'grappelli.dashboard',
'grappelli',

INSTALLED_APPS uygulamasında çalıştı


Benim için yanlışlıkla vardı da oldu 'one_third_pary_app,'yerine 'one_third_pary_app',(konumunu not ,)
J0ANMM

2

Çalıştırmayı denediğimde bu hatayı alıyorum test.py(tam komut dosyaları değil, kullanmak istemiyorum python manage.py test)

ve aşağıdaki yöntem benim için çalışıyor.

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

Benim sorunum şuydu: django-reversion> = 1.8.7, <1.9

django 1.9.7 için kullanmalısınız: django-reversion == 1.10.0

Django-cms 3.2'yi 3.3'e yükselttim ve uygulamaları yorumlayarak, sonra da yorum yapmadan buldum.

Cevabı burada düzeltin: https://stackoverflow.com/a/34040556/2837890


1

Bu sorun aynı zamanda tutarsız settings.py için INSTALLED_APPS'yi yanlış yazdıkları için de gözlemlenir, uygulamaları doğru şekilde ekleyip "," ile ayırıp ayırmadığınızı doğrulayın.


1

Django sürümümü 1.9'a değiştirdiğimde, hata oluşmuyor. pip uninstall django pip install django==1.9


1

Geri kalan çağrı belirtecini bu şekilde yönetmek için Useriçe aktarımı settingsdosyaya koydum

# 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',
    ),
}

Çünkü o anda Django kitaplıkları henüz hazır değil. Bu nedenle importfonksiyonun içine koydum ve çalışmaya başladı. Sunucu başlatıldıktan sonra işlevin çağrılması gerekir


0

Benim durumumda, ayarlarımdan biri olan 'CORS_ORIGIN_WHITELIST' settings.py dosyasında ayarlanmış ancak .env dosyamda mevcut değildi. Bu yüzden ayarlarınızı, özellikle .env ile bağlantılı olanları kontrol etmenizi öneririm.


0

Başkalarının da söylediği gibi, bu, listelenen bir uygulamayı yüklemediğinizde ortaya çıkabilir INSTALLED_APPS.

Benim durumumda, manage.pyistisnayı günlüğe kaydetmeye çalışıyordu, bu da uygulama henüz başlatılmadığı için başarısız olan bir işleme girişimine yol açtı. İstisnadaki exceptcümlenin yorumlanması manage.py, kafa karıştırıcı hatadan kaçınarak özel bir işleme olmadan görüntülendi.

# 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

Tonlarca şey denedim, ancak yalnızca Django'yu 1.8.18'e düşürmek bu sorunu benim için çözdü:

pip install django==1.8.18

Başarısız olan yüklü uygulamalardan biri, ancak hangisini bulamadım.


0

Çalıştırmayı denediğimde şu hatayı alıyorum:

python manage.py makemigrations

o kadar çok şey denedim ve "settings.py" - "INSTALLED_APPS" için bazı referanslar eklediğimi fark ettim

Sadece orada yazdıklarının doğru olduğundan emin ol. Benim hatam ".model" idi. ".app" yerine.

Bu hatayı düzelttim ve şimdi çalışıyor.


-1

Partiye geç kaldım ama benim hatam da grappelli idi. Pypi'de uyumlu sürüme baktım ve bu benim için düzeltti.


-1

Sanal ortamı etkinleştirmeyi deneyin. Benim durumumda git komut satırı aracını kullanarak:

source scripts/activate

Sorunumu çözer.


-1

Şu konumdaki model nesnelerine erişmeye çalışırken bu hatayı aldım 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.

QuestionUygulama model sınıfını yüklemeden önce erişmeye çalışmak benim için hataya neden oldu.


Model Question, bu AppConfig'in models.py dosyasında tanımlanmış mı ?
Gustavo_fringe

Evet, orada tanımlanmıştır
Ojonugwa Jude Ochalifu

-2

Setting.py dosyalarınız doğruysa, manage.py dosyalarına ulaşmayı deneyebilirsiniz, devam ederek ana yöntemde danjgo.setup () 'ı çağırın. Ardından manage.py'yi çalıştırın, sonunda projeyi tekrar çalıştırın, sorun ortadan kalkabilir.


-2

Uygulama paketinizin "admin" modülünde, paketin "modeller" modülünde oluşturulan tüm veritabanlarını kaydedin.

"Modeller" modülünde şu şekilde tanımlanmış bir veritabanı sınıfınız olduğunu varsayalım:

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

bu nedenle bunu yönetici modülüne şu şekilde kaydetmelisiniz:

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

Umarım bu hatayı çözer.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.