Я пытаюсь загрузить все модули в пакете динамически и дополнительно загружать все классы в этих модулях слишком динамично.
Предположим, что следующая структура
mypackage
|---__init__.py
|--- a.py
|--- b.py
a.py выглядит следующим образом
# mypackage/a.py
class AA:
pass
class AB:
pass
class AC:
pass
И b.py
# mypackage/b.py
class BA:
pass
class BB:
pass
class BC:
pass
Сейчас в __init__.py
я пытаюсь реализовать некоторые динамические c логики импорта c, которые позволят мне написать что-то похожее на другой класс, пытающийся использовать этот пакет
# some other class
from mypackage import AA, BA, BB
Хотя это выглядит тривиально Теперь у меня есть десятки классов в каждом модуле. Как я могу добиться вышеизложенного динамически?
Мне удалось импортировать модули до сих пор ---
import pkgutil
from importlib import import_module
from pathlib import Path
for (_, modname, _) in pkgutil.iter_modules([Path(__file__).parent]):
imported_module = import_module('mypackage.' + modname, package=__name__)