Python - Импорт динамического класса

У меня следующая структура папок:

- MyProject
    - App1
        - some_module1.py
        - some_module2.py
    - App2
        - some_other_module1.py
        - some_other_module2.py

Внутри каждого из модулей (например, some_module1.py) есть класс, который расширяется от базового класса в мой случай, продюсер.

Я пытаюсь динамически загружать этот класс. Для этого у меня есть список «установленных приложений», который выглядит следующим образом:

INSTALLED_APPS = (
    'App1',
    'App2',
)

Я пытаюсь написать функцию, которая будет проверять каждый «пакет приложений» для определенного класса производителя и гарантировать, что он расширяется от базового класса производителя. . Примерно так:

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, но, похоже, он не поддерживает такой импорт. Могу ли я добиться этого?

5
задан Hanpan 9 November 2011 в 17:03
поделиться