2017-10-28 151 views
4

源於蟒蛇documentation描述導入系統,存在以下(重點由我做):Python包不是從文件系統

[...]你可以把包作爲一個目錄的文件系統和模塊作爲目錄中的文件,但不要從字面上理解這個類比,因爲包和模塊不需要源自文件系統。 [...]

在文件系統中分別存儲與文件和文件夾不相對應的模塊和軟件包有哪些選擇?

我關於從zip檔案加載模塊和包的可能性。引用段落提到的可能選項之一是什麼? 還有其他的選擇嗎?

+0

如果答案給你一個解決方案,你可以接受它。其他同行可能會發現這個問題/答案有用。 –

回答

1

也就是說你可以考慮一下包和模塊,但的方式,它不是強制性的,一個包/模塊是在文件系統的目錄/文件。

您可以將包/模塊存儲在zip文件中並使用zipimport加載它。

您可以從一個字符串變量加載模塊:

import imp 

code = """ 
def test(): 
    print "function inside module!" 
    """ 

# give module a name 
name = "mymodule" 
mymodule = imp.new_module(name) 
exec code in mymodule.__dict__ 

>>> mymodule.test() 
function inside module! 
+0

是的,我讀過關於從zip文件導入包的信息。我猜可以創建自定義模塊加載器,以便加載模塊,而不管它們的來源。這是正確的嗎? – user42768

+0

是的!它們不需要存在於文件系統中。 –