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

Pet*_*ung 17 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.
Run Code Online (Sandbox Code Playgroud)

服务器上的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()
Run Code Online (Sandbox Code Playgroud)

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

当我在服务器上运行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)
Run Code Online (Sandbox Code Playgroud)

谁能给我一些提示?非常感谢

jba*_*sko 18

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

  • 有一个问题与mysql和运行`python manage.py check`得到库没有加载:/usr/local/lib/libmysqlclient.18.dylib但是`python manage.py runserver`给出了应用程序未加载错误,所以它看起来像设置或配置的任何问题都可能导致此错误. (6认同)

Tri*_*tan 9

当我尝试从 Celery 任务文件(未由 WSGI 加载)内部加载 Django ORM 模型时,出现此错误。为了解决这个问题,我将以下初始化代码放在模型类导入上方的顶部。

import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproj.settings")
django.setup()

# Django dependencies below this line
from myapp.models import MyModel
Run Code Online (Sandbox Code Playgroud)

Django 文档在这里推荐这种不寻常的方法:https://docs.djangoproject.com/en/4.1/topics/settings/#calling-django-setup-is-required-for-standalone-django-usage


inf*_*ith 7

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

这是此问题的错误历史记录.


jam*_*esc 5

./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: 模型尚未加载

希望有更多经验的人能够添加建议。抱歉,我没有给你明确的答案。