Python Glossary English

все 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Сообщить о неточности