Динамическая загрузка модулей Python
Я пытаюсь динамически загрузить модули, которые я создал.
Прямо сейчас это работает правильно:
import structures.index
Но если я попробую то же самое, импортировав его динамически, произойдет сбой.
struct = __import__("structures.index")
Ошибка предоставлена:
Error ('No module named structures.index',)
Есть идеи почему?
Изменить: При использовании полной области (это вроде работает?):
struct = __import__("neoform.structures.index")
Это не выдает никаких ошибок, однако, оно не загружает модуль индекса, вместо этого он загружает модуль «неоформ».
Результатом "struct" является:
<module 'neoform' from '/neoform/__init__.py'>
Кроме того, как дополнительный вопрос, как я могу создать экземпляр класса в динамически загруженном модуле? (при условии, что все модули содержат общее имя класса).
Изменить: Решение: (спасибо Coonj & Rick) Это закончилось тем, что сработало. Не уверен, почему (пока), ноfromlist
должно было быть что-то «что-нибудь», так как это работало, когда я помещал букву «a» в качестве значения (странно, учитывая, что в файле был только 1 класс).
def get_struct_module(self, name):
try:
return = __import__("neoform.structures." + name, fromlist='*')
except ImportError, e:
self.out.add("Could not load struct: neoform.structure." + name + "\n\n" + "Error " + str(e.args))