Error de actualización de Django a 1.9 "AppRegistryNotReady: las aplicaciones aún no están cargadas".

93

Cuando actualicé a django 1.9 desde 1.8 recibí este error. Revisé las respuestas para preguntas similares, pero no creo que esto sea un problema con ningún paquete o aplicación de terceros.

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.

Modifiqué las aplicaciones instaladas para 'django.contrib.auth'.

Kishore K
fuente
1
¿estás usando alguna aplicación de terceros? Comparta su settings.py
utkbansal
Estoy usando muchas aplicaciones de terceros, pero creo que este error proviene de "django / apps / registry.py" y no de ninguna otra aplicación en los paquetes del sitio.
Kishore K
1
Me he enfrentado a un problema similar con django-crispy-forms porque el ibrary aún no es compatible con 1.9. Entonces, esta podría ser una aplicación no compatible.
utkbansal
1
No estoy usando ese paquete. Lo siento Si me equivoco, si está relacionado con algún paquete, el seguimiento apuntará a esa aplicación en los paquetes del sitio, ¿verdad?
Kishore K
Same payu not support 1.9
GrvTyagi

Respuestas:

125

Intente agregar estas líneas en la parte superior de su archivo de configuración:

import django
django.setup()

Y si esto no le ayuda a intentar eliminar las aplicaciones de terceros de su lista de aplicaciones instaladas una por una.

inlanger
fuente
8
Lo intenté, pero recibí este error "django.core.exceptions.ImproperlyConfigured: La configuración SECRET_KEY no debe estar vacía". Aunque tengo el SECRET_KEY en el archivo de configuración.
Kishore K
11
Intente declarar SECRET_KEY ANTES de las líneas mencionadas, algo como: SECRET_KEY = 'MY SECRET KEY' import django django.setup () funcionó para mí .... ahora con otro error :)
Duda Nogueira
1
Esta es una excelente respuesta a la pregunta: "¿Cómo accedo a los objetos del modelo Django desde un script independiente?" :-) Antes de ejecutar el código anterior, necesitará hacer: os.environ.setdefault ("DJANGO_SETTINGS_MODULE", "your.settings") sin embargo.
AdvilUser
1
No funcionó en la configuración, pero funciona en mi secuencia de comandos independiente. Esta excepción también ocurre si olvida llamar a django.setup () en un script de Python independiente. docs.djangoproject.com/en/1.10/ref/applications/…
André Duarte
30
django.setup()es para usar en scripts independientes. No debería ponerlo en la configuración
Alasdair
37

Tenía una función personalizada escrita en uno de mis __init__.pyarchivos de modelos . Estaba causando el error. Cuando moví esta función __init__.pyfuncionó.

Kishore K
fuente
3
Lo mismo aquí, moviéndolo fijo también.
Brachamul
Cabe señalar que las funciones comentadas en este archivo también pueden causar este error.
B-Tron de los Autobots
25

Mi problema fue que intenté importar un modelo de Django antes de llamar django.setup()

Esto funcionó para mí:

import django
django.setup()

from myapp.models import MyModel

El script anterior está en la carpeta raíz del proyecto.

M3RS
fuente
Me enfrentaba a este problema al ejecutar un script, esto lo resolvió.
casi un principiante
14

En mi caso, el error ocurrió cuando hice python manage.py makemigrationselDjango 2.0.6 .

La solución fue ejecutar python manage.py runservery ver el error real (que era solo una variable de entorno faltante).

Pavel Vergeev
fuente
13

Este error puede ocurrir cuando está agregando una aplicación en INSTALLED_APPS el settings.pyarchivo pero no tiene esa aplicación instalada en su computadora. Tienes dos soluciones:

  1. Installesa aplicación usando administradores de paquetes como pipen ubuntu
  2. O comente esa aplicación instalada en el settings.pyarchivo

Este error también puede surgir si no está en el virtual environmentque puede haber creado para su proyecto.

Amrit
fuente
5

Intente eliminar todo el settings.LOGGINGdictConfig y reinicie el servidor. Si eso funciona, reescriba la configuración de acuerdo con la documentación v1.9.

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

pragmar
fuente
Gracias funcionó. Para mí, estaba usando archivos de configuración de Linux en Windows. Por lo tanto, no /var/logexiste la ruta del archivo de registro que dio este error
pratibha
5

Para mí, el problema vino del hecho de que estaba importando una aplicación en la INSTALLED_APPSque él mismo estaba importando un modelo en su__init__.py archivo.

Yo tenía :

settings.py

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

myapp.__init__.py

from django.contrib.sites.models import Site

comentando import modelsen myapp.__init__.pyhizo que funcione:

# from django.contrib.sites.models import Site
Albyorix
fuente
Tengo un problema similar. Pero necesito la importación en mi caso. ¿Cómo lo harías tú?
JohnnyQ
Siempre puede refactorizar para evitar importar modelos desde init . Una opción que funcionaría con seguridad sería refactorizar los archivos que importan su aplicación, pero podrían ser cambios bastante importantes. ¡Al final, es lo que tenía que hacer!
Albyorix
Mismo problema que @JohnnyQ. Funciona bien en 1.8 pero se rompe en 1.9. ¿Hay alguna documentación relevante en algún lugar? La excepción surge debido a la importación de User de django.contrib.auth.models en mi caso
Vinod
Había preguntado sobre esto en una pregunta separada aquí stackoverflow.com/questions/59927122/… y obtuve la respuesta. Gist, no de otra manera que refactorizar
Vinod
4

django.setup () en la parte superior no funcionará mientras esté ejecutando un script explícitamente. Mi problema se resolvió cuando agregué esto en la parte inferior del archivo de configuración

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()
Arup Barman
fuente
Yo uso el shell Pycharm y escribo import djangoy django.setup(). El problema ha sido resuelto.
Seyed Hasan Mousavi
2

Para mi comentando

'grappelli.dashboard',
'grappelli',

en INSTALLED_APPS funcionó

algometrix
fuente
Para mí fue solo que accidentalmente tuve en 'one_third_pary_app,'lugar de 'one_third_pary_app',(tenga en cuenta la posición del ,)
J0ANMM
2

Recibo ese error cuando intento ejecutar test.py(no scripts completos, no quiero usar python manage.py test)

y el siguiente método me funciona.

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):
        ...
Carson
fuente
1

Mi problema fue: django-reversion> = 1.8.7, <1.9

para django 1.9.7 debe usar: django-reversion == 1.10.0

Actualicé django-cms 3.2 a 3.3, y lo encontré comentando aplicaciones y luego descomentando.

Respuesta correcta aquí: https://stackoverflow.com/a/34040556/2837890

Anshik
fuente
1

Este problema también se observa para settings.py inconsistente por escribir INSTALLED_APPS incorrectamente, verifique si incluyó correctamente las aplicaciones y las separó con ",".

Waykos
fuente
1

Cuando cambio mi versión de django a 1.9, no surge el error. pip uninstall django pip install django==1.9

administración
fuente
1

Puse la Userimportación en el settingsarchivo para administrar el token de llamada restante como este

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

Porque en ese momento, las librerías de Django aún no están listas. Por lo tanto, puse el importinterior de la función y empezó a funcionar. La función debe llamarse después de que se inicie el servidor

Tran tailandés
fuente
0

En mi caso, una de mis configuraciones, 'CORS_ORIGIN_WHITELIST' se estableció en el archivo settings.py pero no estaba disponible en mi archivo .env. Así que le sugiero que compruebe su configuración, especialmente las vinculadas a .env

medobills
fuente
0

Como han dicho otros, esto puede deberse a que no ha instalado una aplicación que figura en INSTALLED_APPS .

En mi caso, manage.pyestaba intentando registrar la excepción, lo que llevó a un intento de renderizarla que falló debido a que la aplicación aún no se había inicializado. Al comentar, la exceptcláusula de manage.pyla excepción se mostró sin una representación especial, evitando el error confuso.

# 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
John Lehmann
fuente
0

Intenté muchas cosas, pero solo degradar Django a 1.8.18 solucionó este problema para mí:

pip install django==1.8.18

Es una de las aplicaciones instaladas que está fallando, pero no pude encontrar cuál.

Oriadam
fuente
0

Recibo ese error cuando intento ejecutar:

python manage.py makemigrations

Probé tantas cosas y me di cuenta de que agregué algunas referencias a "settings.py" - "INSTALLED_APPS"

Solo asegúrese de que lo que escribe sea correcto. Mi error fue ".model". en lugar de ".app".

Corregido ese error y ahora está funcionando.

Castor
fuente
-1

Llegué tarde a la fiesta, pero grappelli también fue la razón de mi error. Busqué la versión compatible en pypi y eso me solucionó.

lslaz
fuente
-1

Intente activar el entorno virtual. En mi caso, usando la herramienta de línea de comando git:

source scripts/activate

Resuelve mi problema.

Stephen Mwangi Wanjohi
fuente
-1

Obtuve este error al intentar acceder a los objetos del modelo en 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.

Intentar acceder Questionantes de que la aplicación haya cargado la clase de modelo me provocó el error.

Ojonugwa Jude Ochalifu
fuente
¿El modelo está Questiondefinido en models.py de esta AppConfig?
Gustavo_fringe
Sí, está definido allí
Ojonugwa Jude Ochalifu
-2

Si el relleno de los archivos setting.py es correcto, puede intentar llegar a los archivos manage.py, proceda a llamar a danjgo.setup () en el método principal. Luego ejecute manage.py, finalmente ejecute de nuevo el proyecto, el problema podría desaparecer.

xing liu
fuente
-2

En el módulo "admin" de su paquete de aplicación, registre todas las bases de datos creadas en el módulo "modelos" del paquete.

Suponga que tiene una clase de base de datos definida en el módulo "modelos" como:

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

por lo que debe registrar esto en el módulo de administración como:

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

Espero que esto resuelva el error.

Preetam
fuente