web-dev-qa-db-fra.com

Erreur Django lors de la mise à niveau vers 1.9 "AppRegistryNotReady: les applications ne sont pas encore chargées."

Lors de la mise à niveau vers Django 1.9 à partir de 1.8, j'ai eu cette erreur. J'ai vérifié les réponses aux questions similaires, mais je ne pensais pas que c'était un problème avec les packages ou applications tiers.

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.

J'avais modifié les applications installées pour 'Django.contrib.auth'.

60
Kishore K

Je voudrais une fonction personnalisée écrite sur l'un de mes modèles fichier __init__.py. Cela causait l'erreur. Quand j'ai déplacé cette fonction de __init__.py cela a fonctionné.

21
Kishore K

Essayez d’ajouter ces lignes en haut de votre fichier de paramètres:

import Django
django.setup()

Et si cela ne vous aide pas à essayer de supprimer les applications tierces de la liste des applications installées une par une.

81
inlanger

Cette erreur se produit lorsque vous ajoutez une application dans INSTALLED_APPS dans le fichier settings.py mais que cette application n'est pas installée sur votre ordinateur. Vous avez deux solutions:

  1. Installez cette application en utilisant des gestionnaires de paquets comme pip dans Ubuntu
  2. Ou commentez cette application installée dans le fichier settings.py

Cette erreur peut également survenir si vous ne vous trouvez pas dans votre environnement virtuel que vous avez créé pour votre projet.

7
Amrit

Dans mon cas, l'erreur s'est produite lorsque j'ai créé python manage.py makemigrations sur Django 2.0.6

La solution consistait à exécuter python manage.py runserver et à voir l'erreur réelle (qui était simplement une variable d'environnement manquante).

6
Pavel Vergeev

Essayez de supprimer tout le settings.LOGGING dictConfig et de redémarrer le serveur. Si cela fonctionne, réécrivez le paramètre conformément à la documentation v1.9.

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

5
pragmar

Pour moi, le problème venait du fait que j'importais une application dans INSTALLED_APPS qui importait elle-même un modèle dans son fichier __init__.py.

J'ai eu :

settings.py

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

myapp.__init__.py

from Django.contrib.sites.models import Site

commenter import models dans myapp.__init__.py l'a fait fonctionner:

# from Django.contrib.sites.models import Site
3
Albyorix

Pour moi commenter

'grappelli.dashboard',
'grappelli',

dans INSTALLED_APPS travaillé

2
algometrix

Mon problème était que j'ai essayé d'importer un modèle Django avant d'appeler Django.setup()

Cela a fonctionné pour moi:

import Django
django.setup()

from myapp.models import MyModel

Le script ci-dessus est dans le dossier racine du projet.

2
M3RS

Quand je change ma version de Django en 1.9, l'erreur ne se produit pas . pip uninstall Django pip install Django==1.9

1
admin

Mon problème était: Django-reversion> = 1.8.7, <1.9

pour Django 1.9.7, vous devez utiliser: Django-reversion == 1.10.0

J'ai été mis à niveau de Django-cms 3.2 à 3.3 et je l’ai trouvé en commentant les applications, puis en le remettant en commentaire.

Réponse correcte ici: https://stackoverflow.com/a/34040556/2837890

1
Anshik

Django.setup () dans la partie supérieure ne fonctionnera pas si vous exécutez un script explicitement. Mon problème a été résolu lorsque j'ai ajouté ceci au bas du fichier de paramètres.

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()
0
Arup Barman

Vous avez obtenu cette erreur en essayant d'accéder aux objets de modèle dans 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.

Essayer d'accéder à Question avant que l'application ait chargé la classe de modèle a provoqué l'erreur pour moi.

0

Dans mon cas, l'un de mes paramètres, 'CORS_Origin_WHITELIST' a été défini dans le fichier settings.py mais n'était pas disponible dans mon fichier .env. Je vais donc vous suggérer de vérifier vos paramètres, en particulier ceux liés à .env

0
medobills

J'ai essayé des tas de choses, mais ce n'est qu'en abaissant Django à la version 1.8.18 que ce problème a été résolu:

pip install Django==1.8.18

C'est l'une des applications installées qui échoue, mais je ne pouvais pas trouver laquelle.

0
oriadam

Ce problème est également observé pour incohérent settings.py dans écriture incorrecte de INSTALLED_APPS, vérifiez si vous avez correctement inclus les applications et séparé avec ",".

0
Waykos

En retard pour la fête, mais grappelli était la raison de mon erreur aussi. J'ai regardé la version compatible sur Pypi et cela a été corrigé.

0
lslaz

Essayez d'activer l'environnement virtuel . Dans mon cas, utilisez l'outil de ligne de commande git: 

source scripts/activate

Résout mon problème.

Je mets l'importation User dans le fichier settings pour gérer le jeton d'appel restant comme ceci 

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

Parce qu'à ce moment, les bibliothèques Django ne sont pas encore prêtes. Par conséquent, je mets la import à l'intérieur de la fonction et cela a commencé à fonctionner. La fonction doit être appelée après le démarrage du serveur. 

0
Thai Tran

Comme d'autres l'ont déjà dit, cela peut être dû au fait que vous n'avez pas installé une application répertoriée dans INSTALLED_APPS.

Dans mon cas, manage.py tentait de consigner l'exception, ce qui a entraîné une tentative de restitution, qui a échoué car l'application n'était pas encore initialisée. Par En commentant la clause except dans manage.py, l’exception s’affiche sans rendu spécial, ce qui évite l’erreur confuse.

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