Импорт модулей с использованием переменной в Python

У меня есть скрипт, который импортирует модули «на лету». Поскольку имя модуля изменяется, как только появляется новая версия, трудно проверить, не изменилось ли также имя конкретного модуля в скрипте. Из-за этого я сохраняю имя модулей в верхней части скрипта в переменных, как в этом примере:

var1 = 'moduleName1_v04' var2 = 'moduleName2_v08' ................... import var1 ................... import var2 ................... 

Но если я напишу так, я получу ошибку.

Возникает вопрос: как импортировать модуль с использованием переменной, как в примере? Является ли это возможным?

Да, вы можете достичь этого довольно легко, используя importlib.import_module :

 import importlib module = importlib.import_module(var1) 

Кроме того, вы можете использовать __import__() функцию __import__()

 >>> sys = __import__("sys") >>> sys <module 'sys' (built-in)> 

Функция __import__() – это функция, которую интерпретатор использует для импорта модулей. Тем не менее, не рекомендуется использовать или модифицировать это в пользу более простых и безопасных захватов импорта, таких как первый, упомянутый выше. Цитирование важных документов:

Эта функция вызывается командой import. Он может быть заменен (путем импорта модуля встроенных модулей и назначения встроенным импортерам .__ import__), чтобы изменить семантику оператора импорта, но это сильно не рекомендуется, так как обычно проще использовать крючки импорта (см. PEP 302) для достижения те же цели и не вызывает проблем с кодом, который предполагает использование импорта по умолчанию. Прямое использование __import __ () также обескураживается в пользу importlib.import_module ().

Надеюсь это поможет!

Да, ты можешь.

Например, используя importlib.import_module :

 >>> var1 = 'sys' >>> import importlib >>> mod = importlib.import_module(var1) >>> mod <module 'sys' (built-in)>