web-dev-qa-db-fra.com

AppRegistryNotReady: L'infrastructure de traduction ne peut pas être initialisée.

Lorsque j'essaie d'accéder à mon application, l'erreur suivante apparaît.

AppRegistryNotReady: l'infrastructure de traduction ne peut pas être initialisée Avant que le registre des applications ne soit prêt. Vérifiez que vous ne faites pas Des appels Gettext non paresseux au moment de l'importation

Voici mon fichier 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()

Et voici le 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.
17
Alexandre Tea

J'ai fait face à la même erreur. Suivre a fonctionné pour moi. Dans votre fichier wsgi, remplacez la dernière ligne par:

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

Cela a été changé de Django 1.6 à une version plus récente. Here est la publication qui a contribué au déploiement de l'application Django.

Si vous souhaitez utiliser Nginx en tant que serveur Web pour déployer l'application Django, suivezthispost.

28
Ajeet Khan

La solution @hellsgate a fonctionné pour moi. 

Plus précisément, à partir du lien référencé par @hellsgate , j'ai changé: 

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

à

module = Django.core.wsgi:get_wsgi_application()

dans mon fichier vassals.ini

8
shawn

C’est une réponse pour les moins intelligents (comme moi): Assurez-vous de vérifier l’évident: Le message d’erreur indique: ... Check that you don't make non-lazy gettext calls at import time. Donc, si vous utilisez la traduction de Django dans le nom_vose d’un champ de modèle ou sur toute autre partie évaluée à temps d'importation, vous devez utiliser la version *_lazy. Sinon, vous obtiendrez l'erreur de l'OP.

J'ai eu essentiellement:

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

Et eu la même erreur que l'OP, mais ma config wsgi était bien. 

Tout ce que j'avais à faire était de remplacer gettext par gettext_lazy (ou ugettext par ugettext_lazy) et tout allait bien.

5
jojo

Cela semble être le même que ce bogue signalé incorrectement - https://code.djangoproject.com/ticket/23146 .

Je suis tombé sur ce problème également et la solution suggérée dans ce lien a fonctionné pour moi. La mise à jour doit être faite dans votre fichier wsgi.py. Si vous ne savez pas comment faire le changement, postez 'wsgi.py' pour que je puisse regarder

4
hellsgate

Il se peut que vous manquiez la configuration du chemin d'accès à votre application. Regarde ça sur mon fichier wsgi. Vous trouverez une documentation plus précise icihttps://joshcarllewis.com/articles/getting-started-with-Django . J'espère que cela résoudra votre problème.

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()
1
Pragnesh Chaudhari

Vous pouvez voir quelle version de "Django" vous avez installée avec:

$python -c 'import Django; print (Django.get_version ())'

et voyez que cette version utilise le projet "requeriments.txt". Si ce n'est pas la même version, vous devez désinstaller "Django" et installer la version définie sur "requeriments.txt".

Si vous utilisez "environnement virtuel", vous risquez de vous tromper "environnement virtuel" et vous y avez installé une nouvelle version de Django. , Par exemple:

Dans votre "requeriments.txt", mettez 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
0
Baurin Leza

Même réponse que @hellsgate et @shawn. Je devais remplacer 

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

par

from Django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
0
Julien Spronck