django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.报错终极解决办法

最近需要着手写项目,于是乎翻开了电脑里尘封了一年之久CMDB项目代码,打算来一个二次加工。然后移植到Linux里配置完环境一执行......酸爽!处处报错!一咬牙一跺脚,通宵改改改。 经过艰难的战斗,大部分问题都决绝了,就是有个错误无论如何都改不出来。翻遍了Google和度娘,甚至有很多答案把我带到了新的坑里。就是下面这个BUG:

[root@CentOS CMDB]# python3 manage.py runserver
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7f8a621f7730>
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/django/utils/autoreload.py", line 228, in wrapper
    fn(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 117, in inner_run
    autoreload.raise_last_exception()
  File "/usr/local/lib/python3.6/site-packages/django/utils/autoreload.py", line 251, in raise_last_exception
    six.reraise(*_exception)
  File "/usr/local/lib/python3.6/site-packages/django/utils/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.6/site-packages/django/utils/autoreload.py", line 228, in wrapper
    fn(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/local/lib/python3.6/site-packages/django/apps/registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "/usr/local/lib/python3.6/site-packages/django/apps/config.py", line 94, in create
    module = import_module(entry)
  File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/visitor/桌面/CMDB/users/__init__.py", line 1, in <module>
    from users import models
  File "/home/visitor/桌面/CMDB/users/models.py", line 5, in <module>
    class superUser(models.Model):
  File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 110, in __new__
    app_config = apps.get_containing_app_config(module)
  File "/usr/local/lib/python3.6/site-packages/django/apps/registry.py", line 247, in get_containing_app_config
    self.check_apps_ready()
  File "/usr/local/lib/python3.6/site-packages/django/apps/registry.py", line 125, in check_apps_ready
    raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

就是这个BUG,网上搜索出来的都是让加django.setup(),那种方式所针对的报错内容和我这个不完全一致,一度把我带进坑里。Apps aren't loaded yet 报错是一个比较大的范围,本文的方法适不适用于你,一定要看清开头的报错内容是否与我的一致。

下面来说一下报错原因和解决方式: 很显然报错说是 models.py文件的class superUser(models.Model)有问题,这里很显然没问题啊.....于是我就注释了models中所有的class,然后python manage.py check发现不报错了。一开始感觉问题在这里面,但是这里又实在看不出没问题,后来我才想到是不时因为__init__.py文件里引用了models的问题。于是跑到__init__.py下取消注释,发现可行。F******K!我这才发现之前想在初始化时执行一个功能,于是写在了__init__.py文件里,但是当初太菜,写的函数依赖了models.py文件所以才有了这么一个引用。于是乎,删掉from users import models即可。

总结:django里App的__init__.py文件中千万不要脑残的加上models的引用!!!同理也不要引用同级的views和urls!!!

猜你喜欢

转载自my.oschina.net/u/3723649/blog/1634148