我有一个可信的远程服务器,它存储了很多自定义的Python模块。我可以通过HTTP(例如使用urllib2.urlopen
)作为文本/纯文本获取它们,但我无法将提取的模块代码保存到本地硬盘。如何将代码作为完全可操作的Python模块导入,包括其全局变量和导入?
我想我必须使用exec
和imp
模块功能的组合,但我一直无法使它工作。动态导入Python模块
回答
看起来这应该做的伎俩:importing a dynamically generated module
>>> 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' …> >>>
不错,我一直在想这件事。 – intuited 2010-09-26 23:29:46
是否有一招让我可以让用户“从foo导入Foo”?在这个例子中,我得到“ImportError:No module named foo”。 – 2013-03-04 15:29:06
查看我更新的答案。 – 2013-03-04 15:41:13
- 1. 动态导入Python模块
- 2. 动态导入Python模块
- 3. 动态导入子模块在Python
- 4. 动态导入模块
- 5. Python模块导入*
- 6. Python模块导入
- 7. 导入Python模块
- 8. Python导入模块
- 9. python导入模块
- 10. 动态模块Python
- 11. 动态导入()不加载CSS模块
- 12. 在Ember CLI中导入动态模块
- 13. 使用imp动态导入模块
- 14. 从模块动态导入类
- 15. vscode动态es6模块导入错误
- 16. 的Python:模块的导入模块
- 17. 的Python:动态导入模块和对象
- 18. 无法导入动态安装Python模块
- 19. 从一个文件夹动态导入模块python
- 20. python动态模块导入(代码从3.2到3.3)
- 21. 的Python:动态导入模块的内容
- 22. 如何动态地导入模块在Python
- 23. 如何动态导入python模块函数?
- 24. 动态定义的类在导入模块中不可见python
- 25. 从Python中动态创建的模块中导入代码
- 26. Python子模块:“导入为”与“导入”
- 27. Python导入模块vs导入_module
- 28. Python:已导入的导入模块
- 29. 导入Python模块错误
- 30. Python模块导入问题
你是通过SSL下载它们,还是每个中间路由器都可信? :P – aaronasterling 2010-09-26 19:58:53
实际上,是的 - 模块存储和前端服务器都是单个系统的一部分(甚至位于同一个服务器机房中)。现在,假设没有安全隐患:即使我通过SSL下载代码,如何解释它的问题依然存在。 – dpq 2010-09-26 20:04:30