Модуль distribute
предоставляет механизм, который выполняет большую часть этого.Во-первых, вы можете начать с перечисления файлов python в пакете, используя pkg_resources.resource_listdir
:
>>> module_names = set(os.path.splitext(r)[0]
... for r
... in pkg_resources.resource_listdir("sqlalchemy", "/")
... if os.path.splitext(r)[1] in ('.py', '.pyc', '.pyo', '')
... ) - set(('__init__',))
>>> module_names
set(['engine', 'util', 'exc', 'pool', 'processors', 'interfaces',
'databases', 'ext', 'topological', 'queue', 'test', 'connectors',
'orm', 'log', 'dialects', 'sql', 'types', 'schema'])
Затем вы можете импортировать каждый модуль в цикле:
modules = {}
for module in module_names:
modules[module] = __import__('.'.join('sqlalchemy', module))