Django升级到1.9错误"AppRegistryNotReady:尚未加载应用程序."

Kis*_*e K 71 python django

从1.8升级到django 1.9时出现此错误.我检查了类似问题的答案,但我认为这不是任何第三方软件包或应用程序的问题.

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.
Run Code Online (Sandbox Code Playgroud)

我修改了'django.contrib.auth'的已安装应用程序.

inl*_*ger 97

尝试将此行添加到设置文件的顶部:

import django
django.setup()
Run Code Online (Sandbox Code Playgroud)

如果这无法帮助您尝试逐个删除已安装的应用列表中的第三方应用程序.

  • **`django.setup()`用于独立脚本.你不应该把它放在设置中** (19认同)
  • 尝试声明SECRET_KEY**BEFORE**提到的行,类似于:SECRET_KEY ='MY SECRET KEY'导入django django.setup()它对我有用....现在又出现了另一个错误:) (10认同)
  • 我试了一下,但是我收到了这个错误"django.core.exceptions.ImproperlyConfigured:SECRET_KEY设置不能为空." 即使我在设置文件中有SECRET_KEY. (4认同)

Kis*_*e K 27

我在我的一个模型__init__.py文件上写了一个自定义函数.它导致了错误.当我把这个功能从__init__.py它起作用时.

  • 同样在这里,移动它也固定。 (2认同)

F.M*_*.F. 17

当您指定使用模型的启动代码时,会发生错误。

如果您遵循方法并将其放入您的文件中AppConfig则不得在文件顶部导入模型,而应在ready()方法内部导入模型。例如如下:

# works as models are imported in the ready() method
from django.apps import AppConfig

class MatcherConfig(AppConfig):
    name = 'matcher'
    verbose_name = 'Match-Making'
    def ready(self):
        from matcher.background_tasks import close_timeout_games
        from matcher.models import FourPlayerGame
        # check if a player is not responding every 5 seconds
        close_timeout_games(FourPlayerGame, repeat=5)
Run Code Online (Sandbox Code Playgroud)

但是,以下情况是错误的

# won't work as models are imported at the beginning
from django.apps import AppConfig
from matcher.background_tasks import close_timeout_games
from matcher.models import FourPlayerGame

class MatcherConfig(AppConfig):
    name = 'matcher'
    verbose_name = 'Match-Making'
    def ready(self):
        # check if a player is not responding every 5 seconds
        close_timeout_games(FourPlayerGame, repeat=5)
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅答案。


Pav*_*eev 10

就我而言,当我提出发生错误python manage.py makemigrationsDjango 2.0.6.

解决方案是运行python manage.py runserver并查看实际错误(这只是一个缺少的环境变量).


Him*_*tel 10


在导入任何模型之前首先导入并运行 django.setup()


上面所有的答案都很好,但是一个人可能犯的一个简单错误是(事实上就我而言)。

我在调用之前从我的应用程序导入了 Django 模型django.setup()。所以正确的方法是做...

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'first_project.settings')

import django
django.setup()

Run Code Online (Sandbox Code Playgroud)

然后任何其他导入,例如

from faker import Faker
import random
# import models only after calling django.setup()
from first_app.models import Webpage, Topic, AccessRecord
Run Code Online (Sandbox Code Playgroud)


Amr*_*rit 9

当您在settings.py文件中的INSTALLED_APPS中添加应用程序但未在计算机中安装该应用程序时,会发生此错误.你有两个解决方案:

  1. 使用包管理器安装该应用程序,如ubuntu中的pip
  2. 或者在settings.py文件中注释掉已安装的应用程序

如果您不在可能为项目创建的虚拟环境中,也可能出现此错误.


M3R*_*3RS 8

我的问题是我在调用之前尝试导入Django模型 django.setup()

这为我工作:

import django
django.setup()

from myapp.models import MyModel
Run Code Online (Sandbox Code Playgroud)

上面的脚本位于项目的根文件夹中。


pra*_*mar 5

尝试删除整个settings.LOGGINGdictConfig并重新启动服务器.如果可行,请根据v1.9文档重写设置.

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


小智 5

对我来说,问题来自这样一个事实,即我正在导入一个应用程序,INSTALLED_APPS该应用程序本身在其__init__.py文件中导入一个模型

我有:

settings.py

INSTALLED_APPS = [
    ...
    'myapp',
    ...
]
Run Code Online (Sandbox Code Playgroud)

myapp.__init__.py

from django.contrib.sites.models import Site
Run Code Online (Sandbox Code Playgroud)

注释掉import modelsmyapp.__init__.py做它的工作:

# from django.contrib.sites.models import Site
Run Code Online (Sandbox Code Playgroud)


kri*_*hna 5

如果您错误地启动了普通的 Python shell 并尝试在其中导入 Django 模型,则可能会收到此错误。

你应该用python manage.py shell它来代替。