При попытке запустить runserver
или shell
с помощью manage.py
Я получаю исключение ImportError
. Я использую Django 1.9.Django 1.9 ImportError для import_module
ImportError: No module named 'django.utils.importlib'
При попытке запустить runserver
или shell
с помощью manage.py
Я получаю исключение ImportError
. Я использую Django 1.9.Django 1.9 ImportError для import_module
ImportError: No module named 'django.utils.importlib'
django.utils.importlib
представляет собой библиотеку совместимости для Python 2.6, когда все еще поддерживается. Он был устаревшим с Django 1.7, который отказался от поддержки Python 2.6 и удален в 1.9 за цикл устаревания.
Использование языка Python import_module
функция вместо:
from importlib import import_module
Причина вы можете импортировать его из django.utils.module_loading
что importlib.import_module
импортируется в этом модуле, это не потому что module_loading
каким-либо образом определяет фактическую функцию.
С django.utils.module_loading.import_module
не является частью общедоступного API, его можно удалить в любое время, если он больше не используется - даже при незначительном обновлении версии.
Спасибо, я никогда не понимал, что 'importlib' был встроенным модулем! хороший урок, который я должен буду копать глубже в следующий раз. – Matt
Я решил это со следующим:
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
Обратите внимание, что Django 1.9 только что достиг альфа-статуса и не подходит для использования в производстве. Используйте 1.8, если у вас нет веской причины. –
Спасибо, Дэниэл. В настоящий момент я использую его только в локальном развитии, это больше помогает помочь команде Django отслеживать проблемы, которые сдерживают стабильную версию. – Matt
Django 1.9 сейчас нет. – tutuca