Django 1.7 升级错误:AppRegistryNotReady:应用程序尚未加载

75

我尝试将一个项目从Django 1.6升级到1.7。我遇到了以下错误:

[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] mod_wsgi (pid=14523): Exception occurred processing WSGI script '/home/users1/k/kisvadim/domains/mathtasks.org/django.wsgi'.
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] Traceback (most recent call last): 
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 187, in __call__
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] response = self.get_response(request)
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/core/handlers/base.py", line 199, in get_response
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/core/handlers/base.py", line 239, in handle_uncaught_exception
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] if resolver.urlconf_module is None:
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/core/urlresolvers.py", line 361, in urlconf_module
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] self._urlconf_module = import_module(self.urlconf_name)
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] __import__(name)
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/django/mathtasks/mathtasks/urls.py", line 11, in <module>
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] admin.autodiscover()
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/contrib/admin/__init__.py", line 23, in autodiscover
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] autodiscover_modules('admin', register_to=site)
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/utils/module_loading.py", line 67, in autodiscover_modules
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] for app_config in apps.get_app_configs():
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/apps/registry.py", line 137, in get_app_configs
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] self.check_apps_ready()
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/apps/registry.py", line 124, in check_apps_ready
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] raise AppRegistryNotReady("Apps aren't loaded yet.")
[Thu Oct 09 14:16:41 2014] [error] [client 95.79.172.156] AppRegistryNotReady: Apps aren't loaded yet.

django.wsgi:

import os, sys
import django
virtual_env = os.path.expanduser('~/virtualenv/PythonEnv')
activate_this = os.path.join(virtual_env, 'bin/activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
sys.path.insert(0, os.path.join(os.path.expanduser('~'), 'django/mathtasks'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'mathtasks.settings'
django.setup()
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

任何想法是什么引起了错误以及如何解决它?
更新1:
我替换了:
from django.contrib.auth.models import User

to:

from django.conf import settings
User = settings.AUTH_USER_MODEL

我遇到了以下错误:

[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] mod_wsgi (pid=17128): Exception occurred processing WSGI script '/home/users1/k/kisvadim/domains/mathtasks.org/django.wsgi'. 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] Traceback (most recent call last): 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 187, in __call__ 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] response = self.get_response(request) 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/core/handlers/base.py", line 199, in get_response 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] response = self.handle_uncaught_exception(request, resolver, sys.exc_info()) 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/core/handlers/base.py", line 239, in handle_uncaught_exception 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] if resolver.urlconf_module is None: 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/core/urlresolvers.py", line 361, in urlconf_module 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] self._urlconf_module = import_module(self.urlconf_name) 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] __import__(name) 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/django/mathtasks/mathtasks/urls.py", line 6, in <module> 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] from utils.views import SniptRegistrationView 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/django/mathtasks/utils/views.py", line 1, in <module> 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] from registration.backends.default.views import RegistrationView 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/django/mathtasks/registration/backends/default/views.py", line 7, in <module> 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] from registration.views import ActivationView as BaseActivationView 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/django/mathtasks/registration/views.py", line 11, in <module> 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] from registration.forms import RegistrationForm 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/django/mathtasks/registration/forms.py", line 159, in <module> 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] class UserProfileForm(forms.ModelForm): 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/forms/models.py", line 284, in __new__ 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] opts.help_texts, opts.error_messages) 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/forms/models.py", line 184, in fields_for_model 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] opts = model._meta 
[Thu Oct 09 15:06:15 2014] [error] [client 95.79.172.156] AttributeError: 'str' object has no attribute '_meta'

更新2:

我替换了:

from django.contrib.auth.models import User

to:

from django.contrib.auth import get_user_model
User = get_user_model()

并且:

models.ForeignKey(settings.AUTH_USER_MODEL)

我遇到了以下错误:

[Thu Oct 09 16:10:52 2014] [error] No handlers could be found for logger "django.request" 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] mod_wsgi (pid=31421): Exception occurred processing WSGI script '/home/users1/k/kisvadim/domains/mathtasks.org/django.wsgi'. 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] Traceback (most recent call last): 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 187, in __call__ 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] response = self.get_response(request) 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/core/handlers/base.py", line 199, in get_response 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] response = self.handle_uncaught_exception(request, resolver, sys.exc_info()) 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/core/handlers/base.py", line 239, in handle_uncaught_exception 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] if resolver.urlconf_module is None: 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/core/urlresolvers.py", line 361, in urlconf_module 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] self._urlconf_module = import_module(self.urlconf_name) 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] __import__(name) 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/django/mathtasks/mathtasks/urls.py", line 6, in <module> 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] from utils.views import SniptRegistrationView 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/django/mathtasks/utils/views.py", line 1, in <module> 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] from registration.backends.default.views import RegistrationView 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/django/mathtasks/registration/backends/default/views.py", line 6, in <module> 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] from registration.models import RegistrationProfile 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/django/mathtasks/registration/models.py", line 9, in <module> 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] User = get_user_model() 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/contrib/auth/__init__.py", line 136, in get_user_model 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] return django_apps.get_model(settings.AUTH_USER_MODEL) 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/apps/registry.py", line 199, in get_model 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] self.check_models_ready() 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] File "/home/users1/k/kisvadim/virtualenv/PythonEnv/lib/python2.7/site-packages/django/apps/registry.py", line 131, in check_models_ready 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] raise AppRegistryNotReady("Models aren't loaded yet.") 
[Thu Oct 09 16:10:52 2014] [error] [client 95.79.172.156] AppRegistryNotReady: Models aren't loaded yet.
13个回答

91

2
get_wsgi_application() 的解决方案并没有起作用,因为我的应用程序已经配置好了。但是调用 django.setup() 很有帮助。 - sky
这对我来说解决了问题。在迁移到Django 1.9后出现了初始错误。 - Frankline
3
这个到底放在哪里?我没有任何独立的脚本,至少我自己不知道有。 - teewuane

74

当我升级到Django 1.7时,我遇到了一个类似的(相同的?)问题。在我的情况下,只需要更新wsgi文件:将其替换为

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

2
我花了好几个小时才找到这个解决方法。我也遇到了“django.request”日志记录器找不到处理程序的问题,但是这个方法立刻解决了我的问题。谢谢! - Logic1
我只在生产环境中遇到过这个问题,使用gunicorn解决了。现在一切都很顺利! - benzkji
谢谢!我解决了一个问题,即在Django 1.5升级到1.11后,我只能通过./manage.py runserver运行服务器,而不能通过gunicorn运行。 - SwCharlie

22
我在查阅所有这些讨论串,试图在 Windows 上让 celery 工作(出现了这个特定的错误消息),我只想强调要加上

import django
django.setup()

在你的tasks.py文件的顶部,这最终让我使它工作了。


12

当我试图从应用的__init__.py中导入模型时,出现了这个错误,这是不可能的。


不仅仅是模型,因为我曾尝试导入URL并遇到了相同的问题。 - Abhishek J
你在__init__中声明你的模型?有点奇怪...你应该在models中声明...也许,如果你的包必须首先加载,可以在__init__中加载一些模型。 - Diego Vinícius
2
我并不推荐这样做,我是在说它会导致一个错误。 - Mark

12

INSTALLED_APPS 数组中缺少逗号,这导致了错误。


6
在uwsgi应用程序配置文件中(例如uwsgi.ini),替换以下内容:
module = django.core.handlers.wsgi:WSGIHandler()

on

module=django.core.wsgi:get_wsgi_application()

1

settings.AUTH_USER_MODEL是一个字符串(这就是为什么会出现AttributeError:'str' object has no attribute '_meta' - 它期望一个模型),应该仅在ForeignKey声明中使用:

class Article(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL)

如果你想在其他地方引用你的用户模型,你需要使用get_user_model

from django.contrib.auth import get_user_model
UserModel = get_user_model()

1
在我的情况下,settings.py中的SEcret_key被错误地注释掉了。

1
当我在另一台电脑上移动并忘记在我的虚拟环境中安装psycopg2时,我遇到了这个错误,同时在我的设置中使用了'ENGINE': 'django.db.backends.postgresql'。也许对其他人有用。

0

对于那些(像我一样)从shell中遇到这个错误的人:

请检查您是否在执行Django的shell而不是Python的shell。

python manage.py shell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接