Динамически загружать классы из динамически загружаемых модулей в __init__.py - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь загрузить все модули в пакете динамически и дополнительно загружать все классы в этих модулях слишком динамично.

Предположим, что следующая структура

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__)
...