我有一个可信赖的远程服务器,该服务器存储了许多自定义Python模块。我可以通过HTTP获取它们(例如使用 urllib2.urlopen)作为文本/平原,但我无法将获取的模块代码保存到本地硬盘。如何将代码作为完全可操作的Python模块导入,包括其全局变量和导入?
我想我必须使用某种组合 execimp 模块的功能,但我一直无法使其起作用。

有帮助吗?

解决方案

看起来这应该可以解决: 导入动态生成的模块

>>> import imp
>>> foo = imp.new_module("foo")
>>> foo_code = """
... class Foo:
...     pass
... """
>>> exec foo_code in foo.__dict__
>>> foo.Foo.__module__
'foo'
>>>

另外,如Activestate文章所建议的那样,您可能需要将新模块添加到 sys.modules:

>>> import sys
>>> sys.modules["foo"] = foo
>>> from foo import Foo
<class 'Foo' …>
>>>

其他提示

这是我前一段时间添加书签的内容,涵盖了类似的内容:

这超出了您想要的东西,但是基本的想法就在那里。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top