AppRegistryNotReady: переводная инфраструктура не может быть инициализирована
Когда я пытаюсь получить доступ к моему приложению, я получаю следующую ошибку.
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.
Ответы
Ответ 1
Я столкнулся с той же ошибкой. Следующее сработало для меня.
В вашем файле wsgi измените последнюю строку на:
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Это было изменено с django 1.6 на более новую версию.
Здесь - пост, который помог развернуть приложение django.
Если вы хотите использовать Nginx в качестве веб-сервера для развертывания приложения django, следуйте этой записи.
Ответ 2
Решение @hellsgate работало для меня.
В частности, из ссылки > , на которую ссылается @hellsgate, я изменил:
module = django.core.handlers.wsgi:WSGIHandler()
к
module = django.core.wsgi:get_wsgi_application()
в файле vassals.ini
Ответ 3
Это ответ для менее умных (таких как я): Обязательно проверьте очевидное: Сообщение об ошибке гласит: ... Check that you don't make non-lazy gettext calls at import time.
Итак, если вы используете перевод django в verbose_name поля модели или в любой другой части, которая является оценивается во время импорта, вам нужно использовать версию *_lazy
. Если нет, вы получите ошибку, с которой столкнулся ОП.
У меня в основном было:
from django.db import models
from django.utils.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
), и все было хорошо.
Ответ 4
Это похоже на ошибку с неправильным сообщением - https://code.djangoproject.com/ticket/23146.
Я наткнулся на это, и исправление, предложенное в этой ссылке, было разработано для меня. Обновление должно быть сделано в вашем файле wsgi.py
. Если вы не знаете, как внести изменения, напишите 'wsgi.py', чтобы я посмотрел
Ответ 5
Возможно, вам не удалось установить путь к вашему приложению. Проверьте этот файл wsgi. Вы найдете более точную документацию здесь 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()
Ответ 6
Вы можете увидеть, какую версию "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
Тот же ответ, что и @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()