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.
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.
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
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.
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
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()
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
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()