Вы можете использовать importlib в 2.7:
from importlib import import_module
name = 'xml.etree.ElementTree.ElementTree'
parts = name.rsplit('.', 1)
ElementTree = getattr(import_module(parts[0]), parts[1])
tree = ElementTree()
В старых версиях вы можете использовать функцию __import__
.По умолчанию возвращается верхний уровень импорта пакета (например, xml
).Однако, если вы передадите ему непустое значение fromlist
, он вернет указанный модуль вместо:
name = 'xml.etree.ElementTree.ElementTree'
parts = name.rsplit('.', 1)
ElementTree = getattr(__import__(parts[0], fromlist=['']), parts[1])
tree = ElementTree()