Python 包擴充套件實用程式


當您想要為特定包新增模組搜尋路徑並使用包中包含的資源時,需要使用 Python 庫中的 pkgutil 模組。它包含用於更改 Python 包匯入規則的函式。也可以從包中分發的檔案中載入非程式碼資源。

extend_path(path, name)

擴充套件包含包的模組的搜尋路徑。預期用途是將以下程式碼放在包的 __init__.py 中

import pkgutil
__path__ = pkgutil.extend_path(__path__, __name__)

extend_path() 在 sys.path 中掃描包含名為第二個引數給出的包的子目錄的目錄。目錄列表與作為第一個引數傳遞的路徑值組合,並作為單個列表返回,適合用作包匯入路徑。

**find_loader(fullname):** 獲取給定 fullname 的模組載入器。

**get_importer(path_item):** 獲取給定 path_item 的查詢器。

get_loader(module_or_name)

獲取 module_or_name 的載入器物件。

**iter_importers(fullname=''):** 為給定的模組名稱生成查詢器物件。

**iter_modules(path=None, prefix=''):** 生成 path 上所有子模組的 ModuleInfo,或者如果 path 為 None,則生成 sys.path 上所有頂級模組的 ModuleInfo。

>>> pk = pkgutil.iter_modules()
>>> for p in pk:
   print (p[1])

**walk_packages(path=None, prefix='', onerror=None):** 遞迴生成 path 上所有模組的 ModuleInfo,或者如果 path 為 None,則生成所有可訪問模組的 ModuleInfo。

import pkgutil
import sys
def explore_package(module_name):
   loader = pkgutil.get_loader(module_name)
   for sub_module in pkgutil.walk_packages([loader.filename]):
      _, sub_module_name, _ = sub_module
      qname = module_name + "." + sub_module_name
      print(qname)
      explore_package(qname)

ModuleInfo(module_finder, name, ispkg): 這返回一個命名元組,其中包含模組資訊的簡要摘要。

更新於:2019年7月30日

579 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.