Django 1.7 django.core.exceptions atıyor.


166

Bu benim windows sistemimdeki izleme.

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.

Ve benim manage.py şöyle görünür:

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'de kayıt uygulamasını kullanmaya çalıştığımda bu hatayı alıyorum


1
Adlı bir dizininiz var django-django-4c85a0d; 4c85a0d(kararlı olmayan) bir Django taahhüt karmasıdır. Aslında Django 1.7 kullandığınıza inanmıyorum (cevabım cf)
Kristian Glass

Sorununuzu hiç çözdünüz mü?
Nick Spacek

Bu aynı zamanda ilgili olabilir venv. Venv dizinini yeniden oluşturmak benim için düzeltti. `` mv venv venv_old virtualenv venv kaynağı ./venv/bin/activate pip install -r gereksinimleri.txt ``
Thomas - BeeDesk

1
Ayrıca mac üzerinde settings.py'de LOGGING eklediğimde, /var/log/xx/debug.log üzerinde bir günlük dosyası oluşturduğumdan ve iznim olmadığından böyle bir hatayla karşılaşıyorum. runserver ve everthing iyidir. bazı eşcinsellere yardım edebilir
gkiwi

Çalışırken bu hatayı gördüm docker-compose exec .... Sorun docker-compose komutuna gerekli ortam değişkenlerini geçirmememdi .
Matthew Hegarty

Yanıtlar:


59

Bunu bizim ve bu millet için çözen şey buydu :

Projemiz Django 1.4 ile başladı, önce 1.5'e sonra 1.7'ye gittik. Bizim wsgi.py şöyle görünüyordu:

import os

from django.core.handlers.wsgi import WSGIHandler

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

1.7 tarzı WSGI işleyicisine güncellediğimde:

import os

from django.core.wsgi import get_wsgi_application

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

Şimdi her şey çalışıyor.


1
@Wim'deki düzenlemeye katılmıyorum, gereksiz içe aktarmayı bırakmamız gerektiğini düşündüğüm için değil, otomatik olarak oluşturulan wsgi.py'nin daha önce nasıl göründüğüne ve kopyaladıktan sonra neye benzediğine dair bir örnek verdiğim için 1.7 otojenere wsgi.py'den farklılıklar.
Nick Spacek

1
Otomatik olarak oluşturulan wsgi.pydosyanın içinde hiç bir import syszaman yoktur. 1.4'te değil, 1.5'te değil ve 1.7'de değil. Orada varsa, biri tarafından manuel olarak eklendi - django-admin startproject tarafından eklenmedi.
wim

Bilmek güzel, benim hatam (ve zayıf hafıza). Bunu yaptığımdan beri bir süredir vardı ama o zaman yerleşik davranışı belgelemeye çalıştığımdan emindim.
Nick Spacek

236

Bu komutları çalıştırmak sorunumu çözdü ( bu cevaba verilen kredi ):

import django
django.setup()

Ancak buna neden ihtiyacım olduğundan emin değilim. Yorumlar takdir edilecektir.


12
Üzgünüz, sadece django 1.7'de okuduğum şeyi değiştirerek değişiklikleri kırma notları. docs.djangoproject.com/en/dev/releases/1.7/… . Temel olarak, Django yüklü uygulamayı yüklemek için yeni bir yol var. Django'yu bir Python betiğinden yüklerseniz (özel birim testlerimde olduğu gibi), devam etmeden önce bazı başlatmaların yapılması gerekir ve setup () çağrısı nasıl yapılacağıdır. Bunun yanı sıra, ekibin kudosları, 1.6.2'den 1.7.1'e yükseltmem bir saatlik gerçek iş gibi görünüyor.
JL Peyret

12
Yukarıdaki komutu nerede çalıştırırım? Bir .py dosyasına ekliyorum ya da ne?
KhoPhi

1
Bunu, hatanın oluştuğu bağlamda çalıştırmalısınız
Nimo

3
Bu, doğru cevabı işaretlemek için yeterli oy hakkına sahiptir
acid_crucifix

Bu da 1.7 'ye taşınan bir komut satırı güncelleme komut dosyasında yaşadım bir sorunu çözdü.
Jason Champion

58

Sorun kayıt uygulamanızda. Bu Django kayıt aramaları görünüyor get_user_module()içinde models.pybir modül düzeyinde (modeller hala başvuru kayıt işlemiyle yüklenirken olduğunda). Bu artık çalışmaz:

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

Ben sadece modelleri get_user_model()içinde (ve modül düzeyinde değil) aramak için bu modeller dosyasını değiştirmek istiyorum ve FKs gibi bir şey kullanın:

user = ForeignKey(settings.AUTH_USER_MODEL)

BTW, dosyanızda aranması django.setup()gerekmemelidir, sizin manage.pyiçin çağrılır execute_from_command_line. ( kaynak )


içeri koymak if __name__ == '__main__':benim için işe yarıyor ama bunun iyi bir çözüm olup olmadığını bilmiyorum.
Umair A.

@Neutralizer Bunu nasıl yaptığınızdan emin değilsiniz, ancak django bu modülü içe aktardığından bu işe yaramıyor. Muhtemelen Kullanıcı modelini hiç içe aktarmayarak dairesel dep'den kaçınıyorsunuzdur.
gonz

1
Yani bu satırları isim kontrolüne koy. Yürütmeyi atlıyor olabilir. Yeterince test yapmadım.
Umair A.

18

Az önce aynı sorunla karşılaştı. Sorun şu kidjango-registration django 1.7 kullanıcı modeliyle uyumsuz .

Basit bir düzeltme, kurulu django-registrationmodülünüzde bu kod satırlarını değiştirmektir :

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

için ::

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 

Benimki .venv/local/lib/python2.7/site-packages/registration/models.py(virtualenv)


7
Bunun yerine django-registration-redux kullanabilirsiniz. Güncellenmiş ve bakımı yapılmış çatal: github.com/macropin/django-registration
TJL

1
django-registration-reduxbenim için sorunu düzeltti (OP ile tamamen aynı yığın vardı)
Pierre de LESPINAY

1
Django 1.8'de bununla mücadele eden biri varsa, orada da geçerlidir.
Andrew Schuster

14

Bu benim için Django 1.9 için çalışıyor. Yürütülecek Python betiği Django projesinin kökenindeydi.

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

PROJECT_NAME ve APP_NAME uygulamalarını kendinize göre ayarlayın


1
Benim için çalışıyor. ama wsgi dosyasında daha önce de belirttiğimiz gibi neden bu kodu çalıştırmamız gerektiğini bilmiyorum.
Bay Code

5

Başka bir seçenek de INSTALLED_APPS içinde yinelenen bir girişinizin olması. Bu, test ettiğim iki farklı uygulama için bu hatayı attı. Görünüşe göre Django'nun kontrol ettiği bir şey değil, ama aynı uygulamayı iki kez listeye koyacak kadar aptal. Ben, o kim.


2

Manage.py komutunu çalıştırmadan önce girmeniz gereken bir Python sanal ortamınız var mı?

Bu hatayla kendim karşılaştım ve sorun buydu.


2

Djangocms kullandığımda ve bir eklenti eklediğimde (benim durumumda: djangocms-cascade) bu sorunla karşılaştım. Tabii ki INSTALLED_APPS eklentisini eklemek zorunda kaldım. Fakat buradaki düzen önemlidir.

'Cms' önüne 'cmsplugin_cascade' yerleştirmek sorunu çözdü.


1
sipariş önemli oldu:cms, mptt, menus, sekizai, filer, easy_thumbnails
blakev

2

django 1.7 kullanıyorsanız django-registration-redux == 1.1 yerine django-registration yükleyin


0

./manage.py migrate

Bu benim sorunumu çözdü


Bu soruya bir cevap vermez. Bir yazardan eleştiri veya açıklama istemek için gönderilerinin altına bir yorum bırakın. - Şu kaynaktan
George Z.

@GeorgeZ. Soruyu cevaplama girişimi gibi görünüyor ve bu poster karşılaştığında problemi çözdü - yanlış olduğunu düşündüğünüzde veya daha ayrıntılı olarak
düşünülseniz

0

Benim Sorunum init .py. bir uygulama yaptım ve bunu yapmak istedim:

from MY_APP import myfunc

onun yerine :

from MY_APP.views import myfunc

bu parçalara yaptığım değişiklikleri geri aldığımda. her şey iyi çalıştı.


-1

Senin manage.py"yanlış"; Nereden aldığını bilmiyorum, ama bu 1.7 değil manage.py- korkak bir yayın öncesi yapı veya başka bir şey mi kullanıyordun?

manage.pyAşağıdaki gibi konvansiyonel olarak sıfırlayın ve İşe Yarar Olmalı:

#!/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)

Böyle bir manage.py var ve hala bu sorun var
rmosolgo
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.