我有一個可信的遠程服務器,它存儲了很多自定義的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