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.

person Alexandre Tea    schedule 24.12.2014    source источник
comment
Я столкнулся с этой ошибкой, когда импортировал данные в __init__.py приложения, которое в конечном итоге попыталось импортировать models.py, которое импортирует ugettext.   -  person jozxyqk    schedule 24.07.2015
comment
@jozxyqk Спасибо, что указали на это, я получил ту же ошибку, переместил импорт с __init__.py на models.py, чтобы решить проблему.   -  person Harshveer Singh    schedule 30.04.2016


Ответы (8)


Я столкнулся с той же ошибкой. Следующее сработало для меня. В вашем файле wsgi измените последнюю строку на:

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

Это было изменено с Django 1.6 до более новой версии. Здесь — это сообщение, которое помогло развернуть приложение django.

Если вы хотите использовать Nginx в качестве веб-сервера для развертывания приложения django, следуйте инструкциям этот пост.

person Ajeet Khan    schedule 16.04.2015
comment
Спасибо, Аджит. Я сталкивался с этой проблемой в течение длительного времени и решил ее с помощью вашего ответа. - person Pragnesh Chaudhari; 02.09.2015
comment
Привет. Я не вижу никакой разницы с авторским файлом wsgi.py. Я использую DJango 2, и конфигурация wsgi.py такая же, как вы рекомендовали :( - person Andrés Quiroga; 15.06.2018

Это ответ для менее умных (таких как я): обязательно проверьте очевидное: сообщение об ошибке гласит: ... Check that you don't make non-lazy gettext calls at import time. Итак, если вы используете перевод django в verbose_name поля модели или в любой другой части, которая оценивается в время импорта, вам нужно использовать версию *_lazy. Если нет, вы получите ошибку, которую имел OP.

У меня в основном было:

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), и все было в порядке.

person jojo    schedule 08.05.2017

Решение @hellsgate сработало для меня.

В частности, по ссылке, на которую ссылается @hellsgate, я изменил:

module = django.core.handlers.wsgi:WSGIHandler()

to

module = django.core.wsgi:get_wsgi_application()

в моем файле vassals.ini

person shawn    schedule 29.08.2015


Возможно, вам не хватает пути настройки к вашему приложению. Проверьте это мой файл 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()
person Pragnesh Chaudhari    schedule 02.09.2015
comment
Используя таким образом sys.path.append, я смог создать файл wsgi, указанный в blog.dscpl.com.au/2008/12/ работает!! - person Jesuisme; 22.02.2020

Вот еще одна возможная причина этого исключения: в моем файле apps.py я случайно добавил перевод для name класса AppConfig:

class BookConfig(AppConfig):
    name = _('Book')
    verbose_name = _('Book')

После удаления неуместного перевода все стало работать отлично:

class BookConfig(AppConfig):
    name = 'Book'
    verbose_name = _('Book')
person Eerik Sven Puudist    schedule 30.11.2019

Вы можете увидеть, какая версия «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
person Baurin Leza    schedule 23.03.2015

Тот же ответ, что и у @hellsgate и @shawn. мне пришлось заменить

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

by

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
person Julien Spronck    schedule 21.09.2017