__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.