新聞中心
py_compile —- 編譯 python 源文件
源代碼: Lib/py_compile.py

為民樂(lè)等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及民樂(lè)網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、民樂(lè)網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
py_compile 模塊提供了用來(lái)從源文件生成字節(jié)碼的函數(shù)和另一個(gè)用于當(dāng)模塊源文件作為腳本被調(diào)用時(shí)的函數(shù)。
雖然不太常用,但這個(gè)函數(shù)在安裝共享模塊時(shí)還是很有用的,特別是當(dāng)一些用戶可能沒(méi)有權(quán)限在包含源代碼的目錄中寫(xiě)字節(jié)碼緩存文件時(shí)。
exception py_compile.PyCompileError
當(dāng)編譯文件過(guò)程中發(fā)生錯(cuò)誤時(shí),拋出的異常。
py_compile.compile(file, cfile=None, dfile=None, doraise=False, optimize=- 1, invalidation_mode=PycInvalidationMode.TIMESTAMP, quiet=0)
Compile a source file to byte-code and write out the byte-code cache file. The source code is loaded from the file named file. The byte-code is written to cfile, which defaults to the PEP 3147/PEP 488 path, ending in .pyc. For example, if file is /foo/bar/baz.py cfile will default to /foo/bar/__pycache__/baz.cpython-32.pyc for Python 3.2. If dfile is specified, it is used instead of file as the name of the source file from which source lines are obtained for display in exception tracebacks. If doraise is true, a PyCompileError is raised when an error is encountered while compiling file. If doraise is false (the default), an error string is written to sys.stderr, but no exception is raised. This function returns the path to byte-compiled file, i.e. whatever cfile value was used.
doraise 和 quiet 參數(shù)確定在編譯文件時(shí)如何處理錯(cuò)誤。 如果 quiet 為 0 或 1,并且 doraise 為假值,則會(huì)啟用默認(rèn)行為:寫(xiě)入錯(cuò)誤信息到 sys.stderr,并且函數(shù)將返回 None 而非一個(gè)路徑。 如果 doraise 為真值,則將改為引發(fā) PyCompileError。 但是如果 quiet 為 2,則不會(huì)寫(xiě)入消息,并且 doraise 也不會(huì)有效果。
如果 cfile 所表示(顯式指定或計(jì)算得出)的路徑為符號(hào)鏈接或非常規(guī)文件,則將引發(fā) FileExistsError。 此行為是用來(lái)警告如果允許寫(xiě)入編譯后字節(jié)碼文件到這些路徑則導(dǎo)入操作將會(huì)把它們轉(zhuǎn)為常規(guī)文件。 這是使用文件重命名來(lái)將最終編譯后字節(jié)碼文件放置到位以防止并發(fā)文件寫(xiě)入問(wèn)題的導(dǎo)入操作的附帶效果。
optimize 控制優(yōu)化級(jí)別并會(huì)被傳給內(nèi)置的 compile() 函數(shù)。 默認(rèn)值 -1 表示選擇當(dāng)前解釋器的優(yōu)化級(jí)別。
invalidation_mode 應(yīng)當(dāng)是 PycInvalidationMode 枚舉的成員,它控制在運(yùn)行時(shí)如何讓已生成的字節(jié)碼緩存失效。 如果設(shè)置了 SOURCE_DATE_EPOCH 環(huán)境變量則默認(rèn)值為 PycInvalidationMode.CHECKED_HASH,否則默認(rèn)值為 PycInvalidationMode.TIMESTAMP。
在 3.2 版更改: 將 cfile 的默認(rèn)值改成與 PEP 3147 兼容。 之前的默認(rèn)值是 file + 'c' (如果啟用優(yōu)化則為 'o')。 同時(shí)也添加了 optimize 形參。
在 3.4 版更改: 將代碼更改為使用 importlib 執(zhí)行字節(jié)碼緩存文件寫(xiě)入。 這意味著文件創(chuàng)建/寫(xiě)入的語(yǔ)義現(xiàn)在與 importlib 所做的相匹配,例如權(quán)限、寫(xiě)入和移動(dòng)語(yǔ)義等等。 同時(shí)也添加了當(dāng) cfile 為符號(hào)鏈接或非常規(guī)文件時(shí)引發(fā) FileExistsError 的預(yù)警設(shè)置。
在 3.7 版更改: invalidation_mode 形參是根據(jù) PEP 552 的描述添加的。 如果設(shè)置了 SOURCE_DATE_EPOCH 環(huán)境變量,invalidation_mode 將被強(qiáng)制設(shè)為 PycInvalidationMode.CHECKED_HASH。
在 3.7.2 版更改: SOURCE_DATE_EPOCH 環(huán)境變量不會(huì)再覆蓋 invalidation_mode 參數(shù)的值,而改為確定其默認(rèn)值。
在 3.8 版更改: 增加了 quiet 形參。
class py_compile.PycInvalidationMode
一個(gè)由可用方法組成的枚舉,解釋器可以用來(lái)確定字節(jié)碼文件是否與源文件保持一致。 .pyc 文件在其標(biāo)頭中指明了所需的失效模式。 請(qǐng)參閱 已緩存字節(jié)碼的失效 了解有關(guān) Python 在運(yùn)行時(shí)如何讓 .pyc 文件失效的更多信息。
3.7 新版功能.
-
TIMESTAMP
.pyc文件包括時(shí)間戳和源文件的大小,Python 將在運(yùn)行時(shí)將其與源文件的元數(shù)據(jù)進(jìn)行比較以確定.pyc文件是否需要重新生成。 -
CHECKED_HASH
.pyc文件包括源文件內(nèi)容的哈希值,Python 將在運(yùn)行時(shí)將其與源文件內(nèi)容進(jìn)行比較以確定.pyc文件是否需要重新生成。 -
UNCHECKED_HASH
類似于 CHECKED_HASH,
.pyc文件包括源文件內(nèi)容的哈希值。 但是,Python 將在運(yùn)行時(shí)假定.pyc文件是最新的而完全不會(huì)將.pyc與源文件進(jìn)行驗(yàn)證。此選項(xiàng)適用于
.pycs由 Python 以外的某個(gè)系統(tǒng)例如構(gòu)建系統(tǒng)來(lái)確保最新的情況。
命令行接口
這個(gè)模塊可作為腳本發(fā)起調(diào)用以編譯多個(gè)源文件。 在 filenames 中指定的文件會(huì)被編譯并將結(jié)果字節(jié)碼以普通方式進(jìn)行緩存。 這個(gè)程序不會(huì)搜索目錄結(jié)構(gòu)來(lái)定位源文件;它只編譯顯式指定的文件。 如果某個(gè)文件無(wú)法被編譯則退出狀態(tài)為非零值。
-
位置參數(shù)是要編譯的文件。 如果 - 是唯一的形參,則文件列表將從標(biāo)準(zhǔn)輸入獲取。
-q, —quiet
屏蔽錯(cuò)誤輸出。
在 3.2 版更改: 添加了對(duì) - 的支持。
在 3.10 版更改: 添加了對(duì) -q 的支持。
參見(jiàn)
模塊 compileall
編譯一個(gè)目錄樹(shù)中所有 Python 源文件的工具。
文章標(biāo)題:創(chuàng)新互聯(lián)Python教程:py_compile—-編譯Python源文件
轉(zhuǎn)載來(lái)源:http://fisionsoft.com.cn/article/cddppip.html


咨詢
建站咨詢
