Я пытаюсь динамически загружать созданные мной модули.
Сейчас это работает правильно:
import structures.index
Но если я попробую то же самое, импортировав его динамически, произойдет сбой.
struct = __import__("structures.index")
Ошибка:
Error ('No module named structures.index',)
Есть идеи, почему?
Редактировать: При использовании полной области (это вроде работает?):
struct = __import__("neoform.structures.index")
Это не выдает никаких ошибок, однако, оно не загружает модуль индекса, вместо этого он загружает модуль "neoform".
Результат "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))