2015-09-24 18 views
31

Quando si prova a eseguire runserver o shell utilizzando manage.py, viene visualizzata un'eccezione ImportError. Sto usando Django 1.9.Django 1.9 ImportError per import_module

ImportError: No module named 'django.utils.importlib' 
+5

Si noti che Django 1.9 ha appena raggiunto lo stato alfa e non è adatto per l'uso di produzione. Usa 1.8 a meno che tu non abbia una buona ragione. –

+2

Grazie Daniel. Al momento sto solo eseguendo lo sviluppo locale, è più che altro un modo per aiutare il team di Django a rintracciare i problemi che potrebbero trattenere una versione stabile. – Matt

+1

Django 1.9 è ora disponibile. – tutuca

risposta

54

django.utils.importlib è una libreria di compatibilità quando Python 2.6 è stato ancora supportato. È stato obsoleto da quando Django 1.7, che ha abbandonato il supporto per Python 2.6, e viene rimosso in 1.9 per il ciclo di deprecazione.

Usa Python import_module funzione invece:

from importlib import import_module 

La ragione per cui è possibile importarlo da django.utils.module_loading è che importlib.import_module è importato in quel modulo, è non perché module_loading in alcun modo definisce la funzione reale.

Poiché django.utils.module_loading.import_module non fa parte dell'API pubblica, può essere rimosso in qualsiasi momento se non viene più utilizzato, anche in un aggiornamento di versione minore.

+0

Grazie, non mi ero mai reso conto che 'importlib' era un modulo integrato! una buona lezione che dovrei approfondire la prossima volta. – Matt

19

ho risolto con il seguente:

try: 
    # Django versions >= 1.9 
    from django.utils.module_loading import import_module 
except ImportError: 
    # Django versions < 1.9 
    from django.utils.importlib import import_module 
+3

In quale file posso scrivere questo codice? – Richardd

+1

In quale file posso scrivere questo codice? Ho aggiornato il mio Django dalla 1.7 alla 1.9. E ha smesso di lavorare. – Richardd

+0

sembra un bug in endless_pagination o simile – tutuca

Problemi correlati