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'
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'
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.
Grazie, non mi ero mai reso conto che 'importlib' era un modulo integrato! una buona lezione che dovrei approfondire la prossima volta. – Matt
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
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. –
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
Django 1.9 è ora disponibile. – tutuca