python - googletrans - AppRegistryNotReady: la infraestructura de traducción no se puede inicializar
python traducir (7)
Cuando intento acceder a mi aplicación, aparece el siguiente error.
AppRegistryNotReady: la infraestructura de traducción no se puede inicializar antes de que el registro de aplicaciones esté listo. Comprueba que no hagas llamadas no perezosas de gettext en el momento de la importación
Aquí está mi archivo 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()
Y aquí está el stacktrace.
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.
Es posible que te falte la configuración de la ruta a tu aplicación. Mira esto en mi archivo wsgi. Encontrará documentación más precisa here here . Espero que se resuelva tu problema.
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()
Esta es una respuesta para los menos inteligentes (como yo): asegúrese de verificar lo obvio: el mensaje de error dice: ... Check that you don''t make non-lazy gettext calls at import time.
Por lo tanto, si usa la traducción de django en el nombre verbo de un campo modelo o en cualquier otra parte que se evalúe en el momento de la importación, debe usar la versión *_lazy
. Si no, terminarás con el error que tenía el OP.
Básicamente tuve:
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
Y obtuve el mismo error que el OP, pero mi configuración wsgi estaba bien.
Todo lo que tenía que hacer era reemplazar gettext
con gettext_lazy
(o ugettext
con ugettext_lazy
) y todo estaba bien.
Este parece ser el mismo que este error reportado incorrectamente - https://code.djangoproject.com/ticket/23146 .
Encontré esto también y la solución sugerida en ese enlace funcionó para mí. La actualización debe hacerse en su archivo wsgi.py
Si no está seguro de cómo hacer el cambio, publique ''wsgi.py'' para que lo vea.
La misma respuesta que @hellsgate y @shawn. Tuve que reemplazar
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
por
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
La solución de @hellsgate funcionó para mí.
Específicamente desde el enlace al que hace referencia @hellsgate , cambié:
module = django.core.handlers.wsgi:WSGIHandler()
a
module = django.core.wsgi:get_wsgi_application()
en mi archivo vassals.ini
Me enfrenté al mismo error. Siguiendo trabajó para mí. En su archivo wsgi cambie la última línea a:
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Esto se ha cambiado para django 1.6 a una versión más nueva. Here está la publicación que ayudó a implementar la aplicación django.
Si desea utilizar Nginx como servidor web para implementar la aplicación django, siga this publicación.
Puedes ver qué versión de "Django" has instalado con:
$python -c ''import django; print (django.get_version ())''
y ver que versión usa el proyecto "requerimientos.txt". Si no es la misma versión, debe desinstalar "Django" e instalar la versión establecida en "requeriments.txt".
Si usas "entorno virtual", puedes equivocarte en "entorno virtual" y lo instalaste una nueva versión de django. por ejemplo:
En su "requeriments.txt" ponga 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