На этом шаге мы рассмотрим использование importlib. import_module() для импортирования модулей.
У вас есть имя модуля, который вы хотите импортировать, но оно хранится в строке. Вы хотели бы вызвать команду import с этой строкой.
Используйте функцию importlib.import_module(), чтобы вручную импортировать модуль или часть пакета, имена которых передаются в форме строк. Например:
>>> import importlib >>> math = importlib.import_module('math') >>> math.sin(2) 0.9092974268256817 >>> mod = importlib.import_module('urllib.request') >>> u = mod.urlopen('http://www.python.org') >>>
Функция import_module() просто выполняет те же шаги, что и import, но возвращает получившийся объект модуля обратно в результате. Вам нужно просто сохранить его в переменной и затем использовать, как обычный модуль.
Если вы работаете с пакетами, import_module() также может быть использована для выполнения относительного импортирования. Однако вам нужно предоставить ей дополнительный аргумент. Например:
import importlib # Так же, как 'from . import b' b = importlib.import_module('.b', __package__)
Задача ручного импортирования модулей с использованием import_module() чаще всего возникает при написании кода, который как-то манипулирует модулями или создает над ними обертки. Например, если вы реализовываете какой-то собственный механизм импортирования, который подразумевает загрузку модуля по имени и применение патчей к загруженному коду.
В старом коде вы иногда сможете встретить использование встроенной функции import() для выполнения импортирования. Хотя это и работает, importlib. import_module() обычно проще в использовании.
На следующем шаге приведен продвинутый пример кастомизации процесса импортирования.
На следующем шаге мы рассмотрим загрузку модулей с удаленного компьютера с использованием хуков импортирования.