У меня следующая структура папок:
- MyProject
- App1
- some_module1.py
- some_module2.py
- App2
- some_other_module1.py
- some_other_module2.py
Внутри каждого из модулей (например, some_module1.py) есть класс, который расширяется от базового класса, в моем случае, Producer.
То, что я пытаюсь сделать, - это динамическая загрузка в этом классе. Для этого у меня есть список «установленных приложений», который выглядит следующим образом:
INSTALLED_APPS = (
'App1',
'App2',
)
Я пытаюсь написать функцию, которая будет проверять каждый пакет "app" на предмет определенного класса производителя и проверять его расширение от базового класса производителя. Примерно так:
module_class = 'some_module1.SomeClass'
# Loop through each package in the INSTALLED_APPS tuple:
for app in INSTALL_APPS:
try:
#is the module_class found in this app?
#App1.some_module1.SomeClass - Yes
#App2.some_module1.SomeClass - No
# is the class we found a subclass of Producer?
exception ImportError:
pass
Я пытался поэкспериментировать с imp и importlib, но, похоже, он не справляется с этим видом импорта. Можно ли мне как-нибудь этого добиться?