Python Glossary English

Python 3.15+Исключенияисключение

ImportCycleError

встроенные исключения

Подкласс ImportError: ленивый импорт (lazy import) при первом обращении обнаружил, что модуль прямо или через цепочку импортирует сам себя.

Синтаксис

class ImportCycleError(ImportError)

Обычный импорт с циклом часто «работает наполовину»: второй модуль получает недозагруженный первый и падает с AttributeError или ImportError «partially initialized module». Ленивый импорт откладывает загрузку до первого обращения к имени, поэтому цикл обнаруживается позже — в момент обращения, и тогда возникает ImportCycleError. Поскольку это подкласс ImportError, старый код с except ImportError его ловит. Лечится так же, как любой цикл импортов: вынести общее в третий модуль или импортировать внутри функции.

Примеры

print(issubclass(ImportCycleError, ImportError))  # → True
print(ImportCycleError.__mro__[1].__name__)  # → ImportError

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности