2015-10-17 82 views
13

当我想今天在服务器上部署django项目时,我遇到了这个过程。当我运行python manage.py runserver服务器上,终端显示我:django:django.core.exceptions.AppRegistryNotReady:应用程序尚未加载

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

你的'manage.py'文件是什么样的?你有没有定制它? – jamesc

+4

你从系统检查得到的输出是什么? 'python manage.py check' – jamesc

+0

@jamesc我没有定制'manage.py'文件。 :-( –

回答

14

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

+5

有一个问题,当mysql运行'python manage.py检查'得到的图书馆没有加载:/usr/local/lib/libmysqlclient.18.dylib但是'python manage.py runserver'给出的应用程序未加载错误,因此它看起来像设置或配置的任何问题可能会导致此错误。 – PhoebeB

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的其他问题 - 这似乎是一个常见问题。 E.g如上:Django 1.7 throws django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet

希望有更多经验的人可以添加建议。对不起,我没有给你明确的答案。

+0

'raise AppRegistryNotReady(“应用程序尚未加载。”)'它显然听起来像一个其他错误比模型尚未加载... – christophe31

5

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

Here's the bug history for this issue.

+0

或INSTALLED_APP无法正常工作正确... – zypro

0

有可以在你的settings.py文件的问题。具体来说,INSTALLED_APPS确认您是否正确地包含了应用程序并以“,”分隔。

相关问题