django:django.core.exceptions.AppRegistryNotReady:尚未加载应用

时间:2015-10-17 12:04:54

标签: python django

当我想在服务器上部署django项目时,我一直坚持这个过程。当我在服务器上运行python manage.py runserver时,终端会向我显示:

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.

服务器上的django版本是1.8.5,本地版本是1.8.1。我怀疑这个版本可能会导致这个问题。但我也怀疑wsgi.py写得不好,这里是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()

这是manage.py文件:

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

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dict.settings")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.arg)

当我在服务器上运行python manage.py检查时,输出如下:

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

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dict.settings")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

有人能给我一些提示吗?非常感谢

6 个答案:

答案 0 :(得分:17)

这可能是您的Django设置的问题。例如,我刚刚在LOGGING中指定了一个不存在的目录中的文件名。只要我将其更改为现有目录,问题就解决了。

答案 1 :(得分:6)

我今天遇到了这个问题。 INSTALLED_APPS中有一个应用程序不存在。删除后,它解决了异常。无法以任何理由导入的应用也会引发AppRegistryNotReady异常。

Here's the bug history for this issue.

答案 2 :(得分:4)

./manage.py runserver将使用您的wsgi.py,但看起来您在顶部显示的堆栈跟踪不包含wsgi文件。因此,错误发生在加载wsgi文件之前。

我无法重新创建您的错误,但由于您似乎正在使用新样式wsgi,并且当您提到“服务器上的django版本是1.8.5,本地版本是1.8.1”时,我我想知道你的环境是否有什么问题。

我建议的步骤是:

  1. 重建你的virtualenv。删除env文件夹,然后使用pip install -r requirements.txt或类似内容重新安装。
  2. 查看有关StackOverflow的其他问题 - 这似乎是一个常见问题。例如:Django 1.7 throws django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet
  3. 希望有更多经验的人能够添加建议。对不起,我没有给你明确的答案。

答案 3 :(得分:0)

我通过将apache调用的wsgi入口点的所有者设置为root:root来修复它

答案 4 :(得分:-1)

settings.py文件中可能存在问题。特别是INSTALLED_APPS验证您是否正确包含了应用并用&#34;,&#34;

答案 5 :(得分:-1)

无论现有答案如何,我也都会遇到此错误。我通过在celery函数中进行本地导入来解决。