web-dev-qa-db-fra.com

Django 1.9 ImportError pour import_module

Lorsque vous essayez d'exécuter runserver ou Shell à l'aide de manage.py J'obtiens une exception ImportError. J'utilise Django 1.9.

ImportError: No module named 'Django.utils.importlib'
36
Matt

Django.utils.importlib Est une bibliothèque de compatibilité lorsque Python 2.6 était toujours pris en charge. Il est obsolète depuis Django 1.7, qui a supprimé la prise en charge de Python 2.6, et est supprimé en 1.9 par cycle de dépréciation.

Utilisez plutôt la fonction import_module De Python:

from importlib import import_module

La raison pour laquelle vous pouvez l'importer depuis Django.utils.module_loading Est que importlib.import_module Est importé dans ce module, c'est pas parce que module_loading Définit de quelque manière que ce soit le une fonction.

Étant donné que Django.utils.module_loading.import_module Ne fait pas partie de l'API publique, il peut être supprimé à tout moment s'il n'est plus utilisé - même dans une mise à niveau de version mineure.

65
knbk

J'ai résolu cela avec ce qui suit:

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
21
Matt