все Python 3Исключенияисключение
ImportError
встроенные исключения
Вызывается, если импорт не удался: модуль не найден (ModuleNotFoundError) или в from … import нет запрошенного имени.
Синтаксис
raise ImportError('сообщение')
Главная путаница — с ModuleNotFoundError: он подкласс ImportError, поэтому except ImportError ловит сразу и «модуля вообще нет», и «модуль есть, но нужного имени в нём нет». Отсюда грабли: try/except ImportError вокруг импорта необязательной зависимости молча проглотит и настоящую поломку внутри самого модуля — его собственный битый импорт. А вот ошибка в теле модуля (опечатка даёт NameError) летит как есть, и except ImportError её не ловит. У пойманного объекта есть атрибуты name и path, по ним видно, о каком именно модуле и файле речь.
Примеры
from os import nonexistent # ImportError
try:
import some_module
except ImportError:
print('модуль недоступен')
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности