今天,当我想在服务器上部署一个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)
有人能给我点建议吗?非常感谢。
7条答案
按热度按时间3gtaxfhh1#
我今天遇到了这个问题。INSTALLED_APPS中有一个应用程序不存在。一旦删除,它就解决了异常。由于任何原因无法导入的应用程序也会引发AppRegistryNotReady异常。
Here's the bug history for this issue.
此外,尝试从应用层导入一些东西到项目层也会导致这个问题。例如,我目前正在使用Celery Beat进行项目。我尝试在应用层将任务计划定义为字典,然后将其导入到celery.py项目的www.example.com文件中。将字典从应用导入到项目中会导致Django抛出AppRegistryNotReady异常。同样,在应用程序之间导入项目可能会导致异常。
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
希望有更有经验的人能够提供建议。抱歉,我没有明确的答案给你。
q0qdq0h23#
当我尝试从Celery任务文件(不是由WSGI加载的)中加载Django ORM模型时,我遇到了这个错误。为了修复它,我将下面的初始化代码放在模型类导入的顶部 * 上方 *。
Django的文档在这里推荐了这种不寻常的方法:https://docs.djangoproject.com/en/4.1/topics/settings/#calling-django-setup-is-required-for-standalone-django-usage
rxztt3cl4#
您的www.example.com文件中可能存在问题settings.py。特别是INSTALLED_APPS,请验证您是否正确包含了应用程序并使用“,”分隔。
h7wcgrx35#
我也得到了这个错误,不管现有的答案。我解决了在celery 函数中做本地导入。
kadbb4596#
我通过将apache调用的wsgi入口点的所有者设置为root来修复这个问题:root
pdkcd3nj7#
这很可能是Django设置的问题。例如,我刚刚在
LOGGING
中指定了一个不存在的目录中的文件名。当我将其更改为现有目录时,问题就解决了。