2015-09-24 9 views
31

Beim Versuch, entweder runserver oder shell mit manage.py zu laufen, bekomme ich eine ImportError Ausnahme. Ich benutze Django 1.9.Django 1.9 ImportError für import_module

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

Beachten Sie, dass Django 1.9 gerade erst den Alpha-Status erreicht hat und nicht für den produktiven Einsatz geeignet ist. Verwenden Sie 1.8, es sei denn, Sie haben einen sehr guten Grund. –

+2

Danke Daniel. Ich betreibe es momentan nur in der lokalen Entwicklung, es ist eher ein Mittel, dem Django-Team zu helfen, Probleme aufzuspüren, die eine stabile Veröffentlichung aufhalten. – Matt

+1

Django 1.9 ist jetzt draußen. – tutuca

Antwort

54

django.utils.importlib eine Kompatibilitätsbibliothek für ist, wenn Python 2.6 noch unterstützt wurde. Seit Django 1.7, das die Unterstützung für Python 2.6 verworfen hat, ist es veraltet und wird in 1.9 im Verlauf des Verfallszyklus entfernt.

Verwenden Python import_module die Funktion statt:

from importlib import import_module 

Der Grund, warum Sie es aus django.utils.module_loading importieren kann, ist, dass importlib.import_module in diesem Modul importiert wird, ist es nicht weil module_loading in irgendeiner Weise die eigentliche Funktion definiert.

Da django.utils.module_loading.import_module nicht Teil der öffentlichen API ist, kann sie jederzeit entfernt werden, wenn sie nicht mehr verwendet wird - selbst in einem kleineren Versionsupgrade.

+0

Danke, ich habe nie realisiert "Importlib" war ein eingebautes Modul! eine gute Lektion, die ich beim nächsten Mal noch vertiefen sollte. – Matt

19

Ich löste dies mit den folgenden:

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 welcher Datei kann ich diesen Code schreiben? – Richardd

+1

In welcher Datei kann ich diesen Code schreiben? Ich habe meinen Django von 1.7 auf 1.9 aktualisiert. Und hörte auf zu arbeiten. – Richardd

+0

sieht aus wie ein Fehler in endless_pagination oder ähnliches – tutuca

Verwandte Themen