2015-09-24 14 views
31

Podczas próby uruchomienia runserver lub shell przy użyciu manage.py otrzymuję wyjątek ImportError. Używam Django 1.9.Django 1.9 ImportError dla import_module

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

Należy zauważyć, że Django 1.9 osiągnął tylko status alfa i nie nadaje się do użytku produkcyjnego. Użyj 1.8, chyba że masz bardzo dobry powód. –

+2

Dzięki Daniel. W tej chwili używam go tylko do rozwoju lokalnego, to raczej sposób, aby pomóc zespołowi Django w śledzeniu problemów, które spowodują stabilne wydanie. – Matt

+1

Django 1.9 jest już dostępny. – tutuca

Odpowiedz

54

django.utils.importlib jest biblioteką kompatybilność dla Pythona 2.6, gdy był jeszcze obsługiwany. Jest przestarzały, ponieważ Django 1.7, który zrzucił wsparcie dla Pythona 2.6, jest usuwany w 1.9 na cykl wycofania.

użycie Pythona import_module funkcja zamiast:

from importlib import import_module 

Powodem można importować go z django.utils.module_loading że importlib.import_module jest importowany w tym module, to nie ponieważ module_loading w żaden sposób określa rzeczywistą funkcję.

Ponieważ django.utils.module_loading.import_module nie jest częścią publicznego interfejsu API, można go usunąć w dowolnym momencie, jeśli nie jest już używany - nawet w przypadku niewielkiej aktualizacji.

+0

Dziękuję, nigdy nie zdawałem sobie sprawy, że 'importlib' był modułem wbudowanym! dobra lekcja, której następnym razem powinienem sięgnąć głębiej. – Matt

19

Rozwiązałem to z następujących powodów:

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

W jakim pliku mogę napisać ten kod? – Richardd

+1

W jakim pliku mogę napisać ten kod? Zaktualizowałem django z 1.7 na 1.9. I przestał działać. – Richardd

+0

wygląda jak błąd w endless_pagination lub podobnym – tutuca

Powiązane problemy