django:django.内核.异常.应用注册表未就绪:尚未加载应用程序

eqoofvh9  于 2022-12-01  发布在  Go
关注(0)|答案(7)|浏览(122)

今天,当我想在服务器上部署一个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)

当我manage.py在服务器上运行python www.example.com check时,输出如下:

#!/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)

有人能给我点建议吗?非常感谢。

3gtaxfhh

3gtaxfhh1#

我今天遇到了这个问题。INSTALLED_APPS中有一个应用程序不存在。一旦删除,它就解决了异常。由于任何原因无法导入的应用程序也会引发AppRegistryNotReady异常。
Here's the bug history for this issue.
此外,尝试从应用层导入一些东西到项目层也会导致这个问题。例如,我目前正在使用Celery Beat进行项目。我尝试在应用层将任务计划定义为字典,然后将其导入到celery.py项目的www.example.com文件中。将字典从应用导入到项目中会导致Django抛出AppRegistryNotReady异常。同样,在应用程序之间导入项目可能会导致异常。

mbjcgjjk

mbjcgjjk2#

./manage.py runserver将使用您的wsgi.py,但您在顶部显示的堆栈跟踪似乎不包括wsgi文件。因此,该错误发生在加载wsgi文件之前。
我不能重现你的错误,但是因为你似乎在使用新风格的wsgi,并且正如你提到的“服务器上的django版本是1.8.5,本地版本是1.8.1”,我想知道你的环境中是否有什么问题。
我建议的步骤是:
1.重建您的virtualenv。删除env文件夹并使用pip install -r requirements.txt或类似命令重新安装。
1.查看StackOverflow上的其他问题-这似乎是一个常见问题。例如:Django 1.7 throws django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet
希望有更有经验的人能够提供建议。抱歉,我没有明确的答案给你。

q0qdq0h2

q0qdq0h23#

当我尝试从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

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

rxztt3cl

rxztt3cl4#

您的www.example.com文件中可能存在问题settings.py。特别是INSTALLED_APPS,请验证您是否正确包含了应用程序并使用“,”分隔。

h7wcgrx3

h7wcgrx35#

我也得到了这个错误,不管现有的答案。我解决了在celery 函数中做本地导入。

kadbb459

kadbb4596#

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

pdkcd3nj

pdkcd3nj7#

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

相关问题