当我想在服务器上部署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)
有人能给我一些提示吗?非常感谢
答案 0 :(得分:17)
这可能是您的Django设置的问题。例如,我刚刚在LOGGING
中指定了一个不存在的目录中的文件名。只要我将其更改为现有目录,问题就解决了。
答案 1 :(得分:6)
我今天遇到了这个问题。 INSTALLED_APPS中有一个应用程序不存在。删除后,它解决了异常。无法以任何理由导入的应用也会引发AppRegistryNotReady异常。
答案 2 :(得分:4)
./manage.py runserver
将使用您的wsgi.py
,但看起来您在顶部显示的堆栈跟踪不包含wsgi文件。因此,错误发生在加载wsgi文件之前。
我无法重新创建您的错误,但由于您似乎正在使用新样式wsgi,并且当您提到“服务器上的django版本是1.8.5,本地版本是1.8.1”时,我我想知道你的环境是否有什么问题。
我建议的步骤是:
pip install -r requirements.txt
或类似内容重新安装。希望有更多经验的人能够添加建议。对不起,我没有给你明确的答案。
答案 3 :(得分:0)
我通过将apache调用的wsgi入口点的所有者设置为root:root来修复它
答案 4 :(得分:-1)
settings.py文件中可能存在问题。特别是INSTALLED_APPS验证您是否正确包含了应用并用&#34;,&#34;
答案 5 :(得分:-1)
无论现有答案如何,我也都会遇到此错误。我通过在celery函数中进行本地导入来解决。