Сообщить об ошибке.

Функция __import__() находит и импортирует модуль

Синтаксис:

__import__(name, globals=None, locals=None, fromlist=(), level=0)

Параметры:

  • name - строка str, имя модуля
  • globals=None - значения глобальных переменных
  • locals=None - значения локальных переменных
  • fromlist=() - список вызываемых объектов
  • level=0 - int, количество родительских каталогов для поиска

Описание:

Заметка
Это продвинутая функция, которая не нужна в повседневном программировании на Python, в отличие от importlib.import_module().

Функция __import__() вызывается инструкцией import. Прямое использование __import__() также не рекомендуется в пользу importlib.import_module()

Функция __import__() импортирует имя модуля name, используя данные значений переменных глобальной globals и локальной locals областей видимости, чтобы определить, как интерпретировать имя name в контексте пакета. Список from оператора import дает имена объектов или подмодулей, которые должны быть импортированы из модуля, указанного по имени name. Стандартная реализация вообще не использует свой аргумент locals, а использует глобальные переменные только для определения контекста пакета, указанного в инструкции import.

Уровень level указывает, использовать ли абсолютный или относительный импорт. 0 - по умолчанию, означает только выполнить абсолютный импорт. Положительные значения для уровня указывают количество родительских каталогов для поиска, относительно каталога вызывающего модуля __import__().

Когда переменная name имеет форму package.module, обычно возвращается пакет верхнего уровня (имя до первой точки), а не модуль, названный по имени name. Однако когда задан непустой аргумент fromlist, возвращается модуль с именем name.

Например, оператор import spam приводит к инструкциям, похожим на следующий код:

spam = __import__('spam', globals(), locals(), [], 0)

Инструкция import spam.ham приводит к выполнению этого кода. Обратите внимание, как __import__() возвращает здесь модуль верхнего уровня, поскольку это объект, связанный с именем инструкцией import.

spam = __import__('spam.ham', globals(), locals(), [], 0)

Конструкция импорта вида from spam.ham import eggs, sausage as saus приводит к выполнению следующего кода:

_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0)
eggs = _temp.eggs
saus = _temp.sausage

Здесь из модуля 'spam.ham' извлекаются имена 'eggs', 'sausage' для импорта и присваиваются им соответствующие имена 'eggs', 'saus`.

Если вы просто хотите импортировать модуль по имени, используйте importlib.import_module().