__import__()

Функция __import__() — низкоуровневый механизм, который вызывает оператор import под капотом. В прикладном коде её редко используют напрямую: для динамического импорта по строке принято применять importlib.import_module(). Тем не менее, __import__() остаётся точкой расширения и иногда нужна в инструментах и фреймворках.

Сигнатура

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

Параметры:

  • name — строка с именем модуля или пакета.

  • globals, locals — обычно None; влияют на разрешение относительных импортов.

  • fromlist — список имён, которые должны быть доступны как у from ... import ....

  • level — 0 для абсолютного импорта, >0 — для относительного.

Возвращает: объект модуля; при пустом fromlist возвращается верхний пакет, иначе — указанный подмодуль.

Примеры

Простой импорт по строке:

math = __import__("math")
print(math.sqrt(81))
9.0

Поведение с пакетом — возвращается верхний пакет:

pkg = __import__("os.path")
print(pkg.__name__)
print(pkg.path.basename("/tmp/data/log.txt"))
os
log.txt

С fromlist возвращается уже подмодуль:

ospath = __import__("os.path", fromlist=["basename"])
print(ospath.__name__)
print(ospath.basename("/tmp/data/log.txt"))
os.path
log.txt

Рекомендуемый способ — importlib вместо прямого вызова:

import importlib

name = "json"
module = importlib.import_module(name)
print(module.dumps({"ok": True}))
{"ok": true}

Загрузка плагинов по списку имён:

import importlib

plugins = ["math", "statistics"]
loaded = {name: importlib.import_module(name) for name in plugins}
print(loaded["math"].pi)
print(loaded["statistics"].mean([1, 2, 3, 4]))
3.141592653589793
2.5

См. также

Примечание

Описание основано на официальной документации Python (docs.python.org), распространяемой под лицензией PSF License v2. © Python Software Foundation.