Вы можете использовать __import__
, если у вас есть список строк, представляющих модули, но, вероятно, будет лучше, если вы будете следовать подсказке в документации и использовать importlib.import_module
напрямую:
import importlib
requirements = [lib1, lib2, lib3, lib4, lib5]
imported_libs = {lib: importlib.import_module(lib) for lib in requirements}
У вас нет импортированных библиотек в качестве переменных, доступных таким образом, но вы можете получить к ним доступ через словарь imported_libs
:
>>> requirements = ['sys', 'itertools', 'collections', 'pickle']
>>> imported_libs = {lib: importlib.import_module(lib) for lib in requirements}
>>> imported_libs
{'collections': <module 'collections' from 'lib\\collections\\__init__.py'>,
'itertools': <module 'itertools' (built-in)>,
'pickle': <module 'pickle' from 'lib\\pickle.py'>,
'sys': <module 'sys' (built-in)>}
>>> imported_libs['sys'].hexversion
50660592
Вы также можете обновить globals
, а затем использовать их, как если бы они были импортированы «нормально»:
>>> globals().update(imported_libs)
>>> sys
<module 'sys' (built-in)>