Динамически импортирующий модуль Python
-
05-10-2019 - |
Вопрос
У меня есть надежный удаленный сервер, который хранит много пользовательских модулей Python. Я могу получить их через http (например, используя urllib2.urlopen
) в качестве текста / простота, но я не могу сохранить привлеченный модуль код на локальный жесткий диск. Как я могу импортировать код в качестве полностью работоспособного модуля Python, включая его глобальные переменные и импорт?
Я полагаю, я должен использовать некоторую комбинацию exec
а также imp
Функции модуля, но я не смог сделать это работать еще.
Решение
Похоже, это должно сделать трюк: Импорт динамически сгенерированного модуля
>>> Импорт Import Impond >>> foo = Imp.new_module ("foo") >>> Foo_Code = "" "... Class Foo: ... Прохождение ..." ">>> exec foo_code в foo. __dict__ >>> foo.foo .__ Модуль __ 'foo' >>>
Также, как предложено в статье ActiveState, вы можете добавить свой новый модуль для sys.modules
:
>>> Импорт Sys >>> Sys.modules ["Foo"] = Foo >>> из Foo Import Foou003Cclass 'Foo' …> >>>
Другие советы
Вот что-то, что я добавил, что охватывает что-то подобное:
Это немного за пределами того, что вы хотите, но базовая идея там.