升级到django 1.9 AppRegistryNotReady:应用尚未加载

时间:2017-09-12 14:41:43

标签: django python-2.7

我将我的项目迁移到1.9版本,并且在尝试执行时告诉我:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 350, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 324, in execute
    django.setup()
  File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "/usr/local/lib/python2.7/dist-packages/django/apps/config.py", line 90, in create
    module = import_module(entry)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/home/prueba/djcode/spid/preventivos/__init__.py", line 6, in <module>
    from django.contrib.auth.models import User
  File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/models.py", line 4, in <module>
    from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
  File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/base_user.py", line 49, in <module>
    class AbstractBaseUser(models.Model):
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 94, in __new__
    app_config = apps.get_containing_app_config(module)
  File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line 239, in get_containing_app_config
    self.check_apps_ready()
  File "/usr/local/lib/python2.7/dist-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.

1 个答案:

答案 0 :(得分:1)

自Django&lt; 1.9。从Django 1.6升级到1.9时我遇到了同样的问题。这帮助了我:

  

不再可能安装多个已安装的应用程序   相同的标签。在之前的Django版本中,并非总是如此   工作正常,但也没有直接崩溃。

     

如果您有两个具有相同标签的应用,则应创建一个   其中一个的AppConfig并覆盖其标签。你应该   然后在引用此应用程序或其中的任何位置调整代码   带有旧标签的模型。

     

无法通过不同的方式两次导入相同的模型   路径了。从Django 1.6开始,这可能只会发生在你身上   手动将目录和子目录放在PYTHONPATH上。参考   有关新版项目布局的部分,请参见1.4发行说明   迁移说明。

     

你应该确保:

     
      
  • 所有模型都在INSTALLED_APPS中列出的应用程序中定义,或者具有明确的app_label。
  •   
  • 模型不会作为加载其应用程序的副作用导入。具体而言,您不应在根目录中导入模型   应用程序的模块,也不是定义它的模块   配置类。 Django将执行这些要求   版本1.9,在弃用期后。
  •   

来源:http://django.readthedocs.io/en/latest/releases/1.7.html#standalone-scripts