2012-05-22 208 views
7

Python名稱空間包可以分佈在許多目錄,zip文件或自定義導入程序中。遍歷名稱空間包的所有可導入子模塊的正確方法是什麼?如何導入Python名稱空間包的所有子模塊?

+2

什麼是你想實現什麼?你有什麼嘗試? – Daenyth

+1

您可以使用pkgutil模塊。 http://stackoverflow.com/questions/3365740/how-to-import-all-submodules –

+0

我有興趣將它用於插件枚舉。 – joeforker

回答

1

請閱讀import confusion

非常清楚區分各種不同的方式,你可以導入包和它的子模塊,並在這個過程中回答你的問題。當您從一個包需要一定的子模塊,它往往是方便多了寫from io.drivers import zipimport io.drivers.zip,因爲前者可以讓你參考模塊簡單地壓縮,而不是它的全名。

from modname import *,這提供了一種簡單的方法來導入從模塊到當前命名空間中的所有項目;但是,應該謹慎使用這種說法。

+0

我特別不會詢問「import *」,當你從命名空間包中「導入*」時什麼都不會發生。相反,我想遍歷我可以導入的所有內容。 – joeforker

+0

使用'*'進口是非常糟糕的做法。雖然它是有效的python,但在幾個小範圍之外幾乎總是一個壞主意。 – Daenyth

+0

是的,我同意,因爲它會降低時間效率,但在不知道要使用的特定模塊的情況下,導入整個軟件包將成爲救星。 –

相關問題