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

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

新聞中心

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

pkgutil —- 包擴展工具

源代碼: Lib/pkgutil.py

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


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

class pkgutil.ModuleInfo(module_finder, name, ispkg)

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

3.6 新版功能.

pkgutil.extend_path(path, name)

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

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

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

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

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

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

class pkgutil.ImpImporter(dirname=None)

包裝了 python 的 “經(jīng)典” 導(dǎo)入算法的 PEP 302 查找器

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

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

3.3 版后已移除: 這種模擬已不再必要,因為標(biāo)準(zhǔn)的導(dǎo)入機制現(xiàn)在完全兼容 PEP 302 并且在 importlib 中可用。

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

包裝了 Python 的 “經(jīng)典” 導(dǎo)入算法的 加載器。

3.3 版后已移除: 這種模擬已不再必要,因為標(biāo)準(zhǔn)的導(dǎo)入機制現(xiàn)在完全兼容 PEP 302 并且在 importlib 中可用。

pkgutil.find_loader(fullname)

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

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

在 3.3 版更改: 更新為直接基于 importlib 而不是依賴于包內(nèi)部的 PEP 302 導(dǎo)入模擬。

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

pkgutil.get_importer(path_item)

為給定的 path_item 獲取一個 finder。

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

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

在 3.3 版更改: 更新為直接基于 importlib 而不是依賴于包內(nèi)部的 PEP 302 導(dǎo)入模擬。

pkgutil.get_loader(module_or_name)

module_or_name 獲取一個 loader。

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

在 3.3 版更改: 更新為直接基于 importlib 而不是依賴于包內(nèi)部的 PEP 302 導(dǎo)入模擬。

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

pkgutil.iter_importers(fullname=’’)

為給定的模塊名稱產(chǎn)生 finder 對象。

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

如果指定的模塊位于一個包內(nèi),則該包會作為發(fā)起調(diào)用此函數(shù)的附帶影響被導(dǎo)入。

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

在 3.3 版更改: 更新為直接基于 importlib 而不是依賴于包內(nèi)部的 PEP 302 導(dǎo)入模擬。

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

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

path 應(yīng)當(dāng)為 None 或一個作為查找模塊目標(biāo)的路徑的列表。

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

備注

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

在 3.3 版更改: 更新為直接基于 importlib 而不是依賴于包內(nèi)部的 PEP 302 導(dǎo)入模擬。

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

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

path 應(yīng)當(dāng)為 None 或一個作為查找模塊目標(biāo)的路徑的列表。

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

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

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

示例:

 
 
 
 
  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。 該接口是非標(biāo)準(zhǔn)的,因此本模塊還提供了針對 importlib.machinery.FileFinder 和 zipimport.zipimporter 的實現(xiàn)。

在 3.3 版更改: 更新為直接基于 importlib 而不是依賴于包內(nèi)部的 PEP 302 導(dǎo)入模擬。

pkgutil.get_data(package, resource)

從包中獲取一個資源。

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

返回指定資源內(nèi)容的二進(jìn)制串。

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

 
 
 
 
  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)

將一個名稱解析為對象。

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

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

  • W(.W)*

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

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

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

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

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

ImportError — 如果導(dǎo)入本應(yīng)成功但卻失敗。

AttributeError — 當(dāng)在遍歷所導(dǎo)入包的對象層級結(jié)構(gòu)以獲取想要的對象時遭遇失敗。

3.9 新版功能.


文章標(biāo)題:創(chuàng)新互聯(lián)Python教程:pkgutil—-包擴展工具
網(wǎng)址分享:http://m.5511xx.com/article/djiieji.html