日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
創(chuàng)新互聯Python教程:pkgutil—-包擴展工具

pkgutil —- 包擴展工具

源代碼: Lib/pkgutil.py

創(chuàng)新互聯為您提適合企業(yè)的網站設計?讓您的網站在搜索引擎具有高度排名,讓您的網站具備超強的網絡競爭力!結合企業(yè)自身,進行網站設計及把握,最后結合企業(yè)文化和具體宗旨等,才能創(chuàng)作出一份性化解決方案。從網站策劃到網站設計制作、做網站, 我們的網頁設計師為您提供的解決方案。


該模塊為導入系統(tǒng)提供了工具,尤其是在包支持方面。

class pkgutil.ModuleInfo(module_finder, name, ispkg)

一個包含模塊信息的簡短摘要的命名元組。

3.6 新版功能.

pkgutil.extend_path(path, name)

擴展組成包的模塊的搜索路徑。 預期用途是將以下代碼放到包的 __init__.py 中:

 
 
 
 
  1. from pkgutil import extend_path
  2. __path__ = extend_path(__path__, __name__)

這將添加到包的 __path__ 所有在 sys.path 上以該包命名的目錄的子目錄。 這在想把一個邏輯包的不同部分作為多個目錄來分發(fā)時很有用處。

它還會查找開頭部分 *name 參數相匹配的 *.pkg 文件。 此特性與 *.pth 文件類似(請參閱 site 模塊了解更多信息),區(qū)別在于它不會對以 import 開頭的行做特別對待。 將按外在值對 *.pkg 文件添加信任:除了檢查重復項,,所有在 *.pkg 文件中找到的條目都會被添加到路徑中,不管它們是否存在于文件系統(tǒng)中。 (這是特性而非缺陷。)

如果輸入路徑不是一個列表(已凍結包就是這種情況)則它將被原樣返回。 輸入路徑不會被修改;將返回一個擴展的副本。 條目將被添加到副本的末尾。

sys.path 會被假定為一個序列。 sys.path 中的條目如果不是指向現有目錄的字符串則會被忽略。 sys.path 上當用作文件名時會導致錯誤的 Unicode 條目可以會使得此函數引發(fā)異常(與 os.path.isdir() 的行為一致)。

class pkgutil.ImpImporter(dirname=None)

包裝了 python 的 “經典” 導入算法的 PEP 302 查找器

如果 dirname 是一個字符串,將創(chuàng)建一個 PEP 302 查找器來搜索該目錄。 如果 dirnameNone,則將創(chuàng)建一個 PEP 302 來搜索當前 sys.path,加上任何已凍結或內置的模塊。

請注意 ImpImporter 目前并不支持放置在 sys.meta_path 上使用。

3.3 版后已移除: 這種模擬已不再必要,因為標準的導入機制現在完全兼容 PEP 302 并且在 importlib 中可用。

class pkgutil.ImpLoader(fullname, file, filename, etc)

包裝了 Python 的 “經典” 導入算法的 加載器。

3.3 版后已移除: 這種模擬已不再必要,因為標準的導入機制現在完全兼容 PEP 302 并且在 importlib 中可用。

pkgutil.find_loader(fullname)

為給定的 fullname 獲取一個模塊 loader。

這是針對 importlib.util.find_spec() 的向下兼容包裝器,它將大多數失敗轉換為 ImportError 并且只返回加載器而不是完整的 ModuleSpec

在 3.3 版更改: 更新為直接基于 importlib 而不是依賴于包內部的 PEP 302 導入模擬。

在 3.4 版更改: 更新為基于 PEP 451

pkgutil.get_importer(path_item)

為給定的 path_item 獲取一個 finder。

返回的查找器如果是由一個路徑鉤子新建的則會被緩存至 sys.path_importer_cache。

如果需要重新掃描 sys.path_hooks 則緩存(或其一部分)可以被手動清空。

在 3.3 版更改: 更新為直接基于 importlib 而不是依賴于包內部的 PEP 302 導入模擬。

pkgutil.get_loader(module_or_name)

module_or_name 獲取一個 loader。

如果模塊或包可通過正常導入機制來訪問,則會返回該機制相關部分的包裝器。 如果模塊無法找到或導入則返回 None。 如果指定的模塊尚未被導入,則包含它的包(如果存在)會被導入,以便建立包 __path__。

在 3.3 版更改: 更新為直接基于 importlib 而不是依賴于包內部的 PEP 302 導入模擬。

在 3.4 版更改: 更新為基于 PEP 451

pkgutil.iter_importers(fullname=’’)

為給定的模塊名稱產生 finder 對象。

如果完整名稱包含一個 '.',查找器將針對包含該完整名稱的包,否則它們將被注冊為最高層級查找器(即同時用于 sys.meta_path 和 sys.path_hooks)。

如果指定的模塊位于一個包內,則該包會作為發(fā)起調用此函數的附帶影響被導入。

如果未指定模塊名稱,則會產生所有的最高層級查找器。

在 3.3 版更改: 更新為直接基于 importlib 而不是依賴于包內部的 PEP 302 導入模擬。

pkgutil.iter_modules(path=None, prefix=’’)

path 上的所有子模塊產生 ModuleInfo,或者如果 pathNone,則為 sys.path 上的所有最高層級模塊產生。

path 應當為 None 或一個作為查找模塊目標的路徑的列表。

prefix 是要在輸出時輸出到每個模塊名稱之前的字符串。

備注

只適用于定義了 iter_modules() 方法的 finder。 該接口是非標準的,因此本模塊還提供了針對 importlib.machinery.FileFinder 和 zipimport.zipimporter 的實現。

在 3.3 版更改: 更新為直接基于 importlib 而不是依賴于包內部的 PEP 302 導入模擬。

pkgutil.walk_packages(path=None, prefix=’’, onerror=None)

path 上遞歸地為所有模塊產生 ModuleInfo,或者如果 pathNone,則為所有可訪問的模塊產生。

path 應當為 None 或一個作為查找模塊目標的路徑的列表。

prefix 是要在輸出時輸出到每個模塊名稱之前的字符串。

請注意此函數必須導入給定 path 上所有的 packages (而不是 所有的模塊!),以便能訪問 __path__ 屬性來查找子模塊。

onerror 是在當試圖導入包如果發(fā)生任何異常則將附帶一個參數(被導入的包的名稱)被調用的函數。 如果沒有提供 onerror 函數,則 ImportError 會被捕獲并被忽略,而其他異常則會被傳播,導致模塊搜索的終結。

示例:

 
 
 
 
  1. # list all modules python can access
  2. walk_packages()
  3. # list all submodules of ctypes
  4. walk_packages(ctypes.__path__, ctypes.__name__ + '.')

備注

只適用于定義了 iter_modules() 方法的 finder。 該接口是非標準的,因此本模塊還提供了針對 importlib.machinery.FileFinder 和 zipimport.zipimporter 的實現。

在 3.3 版更改: 更新為直接基于 importlib 而不是依賴于包內部的 PEP 302 導入模擬。

pkgutil.get_data(package, resource)

從包中獲取一個資源。

這是一個針對 loader get_data API 的包裝器。 package 參數應為一個標準模塊格式 (foo.bar) 的包名稱。 resource 參數應為相對路徑文件名的形式,使用 / 作為路徑分隔符。 父目錄名 ..,以及根目錄名 (以 / 打頭) 均不允許使用。

返回指定資源內容的二進制串。

對于位于文件系統(tǒng)中,已經被導入的包來說,這大致等價于:

 
 
 
 
  1. d = os.path.dirname(sys.modules[package].__file__)
  2. data = open(os.path.join(d, resource), 'rb').read()

如果指定的包無法被定位或加載,或者如果它使用了不支持 get_data 的 loader,則將返回 None。 特別地,針對 命名空間包 的 loader 不支持 get_data。

pkgutil.resolve_name(name)

將一個名稱解析為對象。

此功能被用在標準庫的許多地方 (參見 bpo-12915) —— 并且等價的功能也被廣泛用于第三方包例如 setuptools, Django 和 Pyramid。

預期 name 將為以下格式之一,其中 W 是一個有效的 Python 標識符的縮寫而點號表示這些偽正則表達式中的句點字面值:

  • W(.W)*

  • W(.W)*:(W(.W)*)?

第一種形式只是為了保持向下兼容性。 它假定帶點號名稱的某一部分是包,而其余部分則是該包內部的一個對象,并可能嵌套在其他對象之內。 因為包和對象層級結構之間的分界點無法通過觀察來確定,所以使用這種形式必須重復嘗試導入。

在第二種形式中,調用方通過提供一個單獨冒號來明確分界點:冒號左邊的帶點號名稱是要導入的包,而冒號右邊的帶點號名稱則是對象層級結構。 使用這種形式只需要導入一次。 如果它以冒號結尾,則將返回一個模塊對象。

此函數將返回一個對象(可能為模塊),或是引發(fā)下列異常之一:

ValueError — 如果 name 不為可識別的格式。

ImportError — 如果導入本應成功但卻失敗。

AttributeError — 當在遍歷所導入包的對象層級結構以獲取想要的對象時遭遇失敗。

3.9 新版功能.


當前標題:創(chuàng)新互聯Python教程:pkgutil—-包擴展工具
鏈接URL:http://www.5511xx.com/article/djiieji.html