是否有直接的方式列出包中所有模塊的名稱,而不使用__all__
?有沒有一種標準的方式來列出包中的Python模塊名稱?
例如,假設這個包:
/testpkg
/testpkg/__init__.py
/testpkg/modulea.py
/testpkg/moduleb.py
我不知道是否有做這樣的一個標準或內置方式:
>>> package_contents("testpkg")
['modulea', 'moduleb']
手動的方法是遍歷模塊搜索路徑以查找程序包的目錄。然後可以列出該目錄中的所有文件,過濾出唯一命名的py/pyc/pyo文件,剝離擴展名並返回該列表。但是對於模塊導入機制已經在內部進行的操作來說,這似乎是相當多的工作。該功能暴露在任何地方?
列出內容o f已經導入的模塊。我正在尋找一種方法來列出尚未導入的包的內容,就像'from x import *'在未指定__all__時所做的一樣。 – DNS 2009-01-28 15:16:52
from x import *首先導入模塊,然後將所有內容複製到當前模塊。 – Seb 2009-01-28 15:29:17
由於Windows上的區分大小寫問題,我意識到'從x導入*'實際上並不導入包的子模塊。我只是把它作爲我想要做的一個例子,爲了避免混淆,我編輯了它。 – DNS 2009-01-28 15:56:35