2014-12-24 9 views
16

Quando provo ad accedere alla mia app, ricevo il seguente errore.AppRegistryNotReady: l'infrastruttura di traduzione non può essere inizializzata

AppRegistryNotReady: l'infrastruttura di traduzione non può essere inizializzata prima che il registro delle app sia pronto. Controllare che non si effettuare chiamate gettext non pigri al momento dell'importazione

Ecco il mio file di 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() 

E qui è lo 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. 
+3

mi sono imbattuto in questo errore quando mi importava roba in '__init __. Py' dell'app che in ultima analisi ha cercato di importare' models.py' che importa 'ugettext '. – jozxyqk

+1

@jozxyqk Grazie per la segnalazione, stavo ricevendo lo stesso errore, spostato le importazioni da '__init __. Py' a' models.py' per risolvere il problema. –

risposta

27

Ho affrontato lo stesso errore. In seguito ha funzionato per me. Nel file WSGI Modificare l'ultima riga a:

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

Questa è stata cambiata fro Django 1.6 alla versione più recente. Here è il post che ha aiutato a distribuire l'applicazione django.

Se si desidera utilizzare Nginx come server Web per distribuire l'app django, seguire this post.

+1

Grazie, Ajeet. Ho affrontato questo problema da molto tempo e lo risolvo con la tua risposta. –

4

Questo sembra essere lo stesso di questo bug segnalato in modo errato - https://code.djangoproject.com/ticket/23146.

Mi sono imbattuto anche in questo e la correzione suggerita in questo collegamento ha funzionato per me. L'aggiornamento deve essere effettuato nel tuo file wsgi.py. Se non siete sicuri di come fare il cambio, post 'wsgi.py' per me avere un'occhiata a

0

Si può vedere quale versione di "Django" si è installato con:

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

e vedi che la versione usa il progetto "requeriments.txt". Se non è la stessa versione, è necessario disinstallare "Django" e installare la versione impostata su "requeriments.txt".

Se si utilizza "ambiente virtuale", è possibile che tu stia errato "ambiente virtuale" e hai installato una nuova versione di django. per esempio:

Nel vostro "requeriments.txt" mettere 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 soluzione ha funzionato per me.

particolare dal link referenced by @hellsgate, ho cambiato:

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

a

module = django.core.wsgi:get_wsgi_application() 

nel mio file vassals.ini

1

Potrebbe mancare la creazione di percorso per l'applicazione. Controlla questo il mio file wsgi. Troverai documentazione più accurata herehttps://joshcarllewis.com/articles/getting-started-with-django. Spero che risolva il tuo 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() 
1

Questa è una risposta per quelle meno intelligenti (come me): Assicuratevi di controllare l'ovvio: Il messaggio di errore dice: ... Check that you don't make non-lazy gettext calls at import time. Quindi, se si utilizza la traduzione di Django nel verbose_name di un campo modello o su qualsiasi altra parte valutata al momento dell'importazione, è necessario utilizzare la versione *_lazy. Altrimenti, finirai con l'errore che l'OP ha avuto.

ho praticamente avuto:

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 

e ottenuto lo stesso errore del PO, ma il mio WSGI config andava bene.

Tutto quello che dovevo fare era sostituire gettext con gettext_lazy (o ugettext con ugettext_lazy) e tutto andava bene.

0

La stessa risposta di @hellsgate e @shawn. Ho dovuto sostituire

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

da

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