当我尝试访问我的应用时,我收到以下错误。
AppRegistryNotReady:翻译基础设施不可能 在应用程序注册表准备好之前初始化。检查你没有 在导入时进行非延迟的gettext调用
这是我的wsgi.py文件:
"""
WSGI config for Projectizer project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/
"""
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Projectizer.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
这是堆栈跟踪。
mod_wsgi (pid=28928): Exception occurred processing WSGI script '/var/www/projectizer/apache/django.wsgi'.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 187, in __call__
response = self.get_response(request)
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 199, in get_response
response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 236, in handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
File "/usr/local/lib/python2.7/dist-packages/django/views/debug.py", line 91, in technical_500_response
html = reporter.get_traceback_html()
File "/usr/local/lib/python2.7/dist-packages/django/views/debug.py", line 350, in get_traceback_html
return t.render(c)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 148, in render
return self._render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 142, in _render
return self.nodelist.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 844, in render
bit = self.render_node(node, context)
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py", line 80, in render_node
return node.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py", line 90, in render
output = self.filter_expression.resolve(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 624, in resolve
new_obj = func(obj, *arg_vals)
File "/usr/local/lib/python2.7/dist-packages/django/template/defaultfilters.py", line 769, in date
return format(value, arg)
File "/usr/local/lib/python2.7/dist-packages/django/utils/dateformat.py", line 343, in format
return df.format(format_string)
File "/usr/local/lib/python2.7/dist-packages/django/utils/dateformat.py", line 35, in format
pieces.append(force_text(getattr(self, piece)()))
File "/usr/local/lib/python2.7/dist-packages/django/utils/dateformat.py", line 268, in r
return self.format('D, j M Y H:i:s O')
File "/usr/local/lib/python2.7/dist-packages/django/utils/dateformat.py", line 35, in format
pieces.append(force_text(getattr(self, piece)()))
File "/usr/local/lib/python2.7/dist-packages/django/utils/encoding.py", line 85, in force_text
s = six.text_type(s)
File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 144, in __text_cast
return func(*self.__args, **self.__kw)
File "/usr/local/lib/python2.7/dist-packages/django/utils/translation/__init__.py", line 83, in ugettext
return _trans.ugettext(message)
File "/usr/local/lib/python2.7/dist-packages/django/utils/translation/trans_real.py", line 325, in ugettext
return do_translate(message, 'ugettext')
File "/usr/local/lib/python2.7/dist-packages/django/utils/translation/trans_real.py", line 306, in do_translate
_default = translation(settings.LANGUAGE_CODE)
File "/usr/local/lib/python2.7/dist-packages/django/utils/translation/trans_real.py", line 209, in translation
default_translation = _fetch(settings.LANGUAGE_CODE)
File "/usr/local/lib/python2.7/dist-packages/django/utils/translation/trans_real.py", line 189, in _fetch
"The translation infrastructure cannot be initialized before the "
AppRegistryNotReady: The translation infrastructure cannot be initialized before the apps registry is ready. Check that you don't make non-lazy gettext calls at import time.
答案 0 :(得分:28)
我遇到了同样的错误。以下为我工作。 在您的wsgi文件中,将最后一行更改为:
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
这已从django 1.6更改为更新版本。 Here是帮助部署django应用程序的帖子。
如果您想使用Nginx作为网络服务器来部署django应用,请点击 this 帖子。
答案 1 :(得分:8)
@hellsgate解决方案为我工作。
具体来自link referenced by @hellsgate,我改变了:
module = django.core.handlers.wsgi:WSGIHandler()
到
module = django.core.wsgi:get_wsgi_application()
在我的vassals.ini文件中
答案 2 :(得分:5)
对于那些不那么聪明的人(像我一样),这是一个答案:一定要检查明显的:错误信息说:... Check that you don't make non-lazy gettext calls at import time.
所以,如果你在verbose_name中使用django的翻译模型字段或在导入时评估的任何其他部分,您需要使用*_lazy
版本。如果没有,你最终会得到OP的错误。
我基本上有:
from django.db import models
from django.utlils.translation import gettext as _
import datetime
# other things
class myModle(models.Model):
date = models.DateField(_('Date'), default=datetime.date.today)
# other defs. and things
并得到与OP相同的错误,但我的wsgi配置很好。
我所要做的只是将gettext
替换为gettext_lazy
(或ugettext
替换为ugettext_lazy
),一切都很好。
答案 3 :(得分:4)
这似乎与错误报告的错误相同 - https://code.djangoproject.com/ticket/23146。
我也遇到了这个问题,并且该链接中提出的解决方案适用于我。需要在wsgi.py
文件中进行更新。如果您不确定如何进行更改,请发布'wsgi.py'供我查看
答案 4 :(得分:1)
您可能缺少设置应用程序的路径。看看我的wsgi文件。您会找到更准确的文档here https://joshcarllewis.com/articles/getting-started-with-django。我希望它能解决你的问题。
import os, sys
sys.path.append('D:/django/mysite')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
答案 5 :(得分:1)
这是导致该异常的另一个可能原因:在我的apps.py
文件中,我不小心添加了name
类的AppConfig
的翻译:
class BookConfig(AppConfig):
name = _('Book')
verbose_name = _('Book')
删除错误的翻译后,一切都开始正常运行:
class BookConfig(AppConfig):
name = 'Book'
verbose_name = _('Book')
答案 6 :(得分:0)
你可以看到" Django"的版本。你安装了:
$python -c 'import django; print (django.get_version ())'
并看到该版本使用了项目" requeriments.txt"。如果版本不同,则必须卸载" Django"并将版本集安装到" requeriments.txt"。
如果您使用"虚拟环境",可能是您最不正确的错误"虚拟环境"你安装了新版本的django。 例如:
在你的" requeriments.txt"把Django == 1.6.1
$python -c 'import django; print(django.get_version())'
1.7.4
$sudo pip uninstall Django
$sudo pip install Django==1.6.1
答案 7 :(得分:0)
与@hellsgate和@shawn相同的答案。我不得不替换
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
通过
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()