web-dev-qa-db-fra.com

django: Django.core.exceptions.AppRegistryNotReady: Les applications ne sont pas encore chargées.

J'étais coincé dans le processus lorsque je voulais déployer le projet Django sur un serveur aujourd'hui. Quand je lance python manage.py runserver sur le serveur, le terminal me montre ceci:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/lib/python2.7/site-packages/Django/core/management/__init__.py", line 351, in execute_from_command_line
    utility.execute()
  File "/usr/lib/python2.7/site-packages/Django/core/management/__init__.py", line 343, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/lib/python2.7/site-packages/Django/core/management/__init__.py", line 177, in fetch_command
    commands = get_commands()
  File "/usr/lib/python2.7/site-packages/Django/utils/lru_cache.py", line 101, in wrapper
    result = user_function(*args, **kwds)
  File "/usr/lib/python2.7/site-packages/Django/core/management/__init__.py", line 72, in get_commands
    for app_config in reversed(list(apps.get_app_configs())):
  File "/usr/lib/python2.7/site-packages/Django/apps/registry.py", line 137, in get_app_configs
    self.check_apps_ready()
  File "/usr/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.

La version de Django sur le serveur est 1.8.5 et la version locale est 1.8.1. Je doute que la version puisse causer ce problème. Mais je doutais aussi que le wsgi.py ne soit pas écrit correctement, voici le wsgi.py:

import os
import sys

path = '/Users/Peterhon/Desktop/dict/'
if path not in sys.path:
    sys.path.append(path)

os.chdir(path)

os.environ.setdefault("Django_SETTINGS_MODULE", "dict.settings")

import Django
django.setup()

from Django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

Voici le fichier manage.py:

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

if __== "__main__":
    os.environ.setdefault("Django_SETTINGS_MODULE", "dict.settings")

    from Django.core.management import execute_from_command_line

    execute_from_command_line(sys.arg)

Lorsque j'exécute python manage.py check sur le serveur, le résultat est le suivant:

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

if __== "__main__":
    os.environ.setdefault("Django_SETTINGS_MODULE", "dict.settings")

    from Django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

Quelqu'un pourrait-il me donner des conseils? Merci beaucoup

16
Peter Tsung

Cela pourrait bien être un problème avec vos paramètres Django. Par exemple, je venais de spécifier dans LOGGING un nom de fichier dans un répertoire inexistant. Dès que je l'ai changé pour un répertoire existant, le problème a été résolu.

17
jbasko

J'ai rencontré ce problème aujourd'hui. Il y avait une application dans INSTALLED_APPS qui n'existait pas. Une fois qu'il a été supprimé, il a résolu l'exception. Les applications qui ne peuvent pas être importées pour quelque raison que ce soit généreront également une exception AppRegistryNotReady.

Voici l'historique des bogues pour ce problème.

5
infosmith

./manage.py runserver utilisera votre wsgi.py mais il semblerait que la trace de pile que vous avez affichée en haut n'inclue pas le fichier wsgi. Par conséquent, l'erreur se produit avant le chargement du fichier wsgi.

Je ne suis pas en mesure de reproduire votre erreur, mais comme vous semblez utiliser le nouveau style wsgi et que vous mentionnez "la version de Django sur le serveur est la 1.8.5, et la version locale est 1.8.1", je me demande si quelque chose ne va pas dans votre environnement.

Mes étapes suggérées sont:

  1. Reconstruisez votre virtualenv. Supprimez le dossier env et réinstallez-le avec pip install -r requirements.txt ou similaire.
  2. Consultez les autres questions sur StackOverflow - cela semble être un problème courant. Par exemple, comme indiqué ci-dessus: Django 1.7 lance Django.core.exceptions.AppRegistryNotReady: les modèles ne sont pas encore chargés

Espérons qu'une personne plus expérimentée pourra ajouter des suggestions. Désolé je n'ai pas la réponse définitive pour vous.

4
jamesc

Il peut y avoir un problème dans votre fichier settings.py. INSTALLED_APPS en particulier vérifie si vous avez correctement inclus les applications et séparé avec ",".

0
Waykos

J'ai aussi cette erreur quelles que soient les réponses existantes. Je résous par importer localement dans la fonction céleri.

0
Sarit