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

為民樂等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及民樂網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、民樂網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
py_compile 模塊提供了用來從源文件生成字節(jié)碼的函數(shù)和另一個用于當(dāng)模塊源文件作為腳本被調(diào)用時的函數(shù)。
雖然不太常用,但這個函數(shù)在安裝共享模塊時還是很有用的,特別是當(dāng)一些用戶可能沒有權(quán)限在包含源代碼的目錄中寫字節(jié)碼緩存文件時。
exception py_compile.PyCompileError
當(dāng)編譯文件過程中發(fā)生錯誤時,拋出的異常。
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ù)確定在編譯文件時如何處理錯誤。 如果 quiet 為 0 或 1,并且 doraise 為假值,則會啟用默認(rèn)行為:寫入錯誤信息到 sys.stderr,并且函數(shù)將返回 None 而非一個路徑。 如果 doraise 為真值,則將改為引發(fā) PyCompileError。 但是如果 quiet 為 2,則不會寫入消息,并且 doraise 也不會有效果。
如果 cfile 所表示(顯式指定或計(jì)算得出)的路徑為符號鏈接或非常規(guī)文件,則將引發(fā) FileExistsError。 此行為是用來警告如果允許寫入編譯后字節(jié)碼文件到這些路徑則導(dǎo)入操作將會把它們轉(zhuǎn)為常規(guī)文件。 這是使用文件重命名來將最終編譯后字節(jié)碼文件放置到位以防止并發(fā)文件寫入問題的導(dǎo)入操作的附帶效果。
optimize 控制優(yōu)化級別并會被傳給內(nèi)置的 compile() 函數(shù)。 默認(rèn)值 -1 表示選擇當(dāng)前解釋器的優(yōu)化級別。
invalidation_mode 應(yīng)當(dāng)是 PycInvalidationMode 枚舉的成員,它控制在運(yùn)行時如何讓已生成的字節(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')。 同時也添加了 optimize 形參。
在 3.4 版更改: 將代碼更改為使用 importlib 執(zhí)行字節(jié)碼緩存文件寫入。 這意味著文件創(chuàng)建/寫入的語義現(xiàn)在與 importlib 所做的相匹配,例如權(quán)限、寫入和移動語義等等。 同時也添加了當(dāng) cfile 為符號鏈接或非常規(guī)文件時引發(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)境變量不會再覆蓋 invalidation_mode 參數(shù)的值,而改為確定其默認(rèn)值。
在 3.8 版更改: 增加了 quiet 形參。
class py_compile.PycInvalidationMode
一個由可用方法組成的枚舉,解釋器可以用來確定字節(jié)碼文件是否與源文件保持一致。 .pyc 文件在其標(biāo)頭中指明了所需的失效模式。 請參閱 已緩存字節(jié)碼的失效 了解有關(guān) Python 在運(yùn)行時如何讓 .pyc 文件失效的更多信息。
3.7 新版功能.
-
TIMESTAMP
.pyc文件包括時間戳和源文件的大小,Python 將在運(yùn)行時將其與源文件的元數(shù)據(jù)進(jìn)行比較以確定.pyc文件是否需要重新生成。 -
CHECKED_HASH
.pyc文件包括源文件內(nèi)容的哈希值,Python 將在運(yùn)行時將其與源文件內(nèi)容進(jìn)行比較以確定.pyc文件是否需要重新生成。 -
UNCHECKED_HASH
類似于 CHECKED_HASH,
.pyc文件包括源文件內(nèi)容的哈希值。 但是,Python 將在運(yùn)行時假定.pyc文件是最新的而完全不會將.pyc與源文件進(jìn)行驗(yàn)證。此選項(xiàng)適用于
.pycs由 Python 以外的某個系統(tǒng)例如構(gòu)建系統(tǒng)來確保最新的情況。
命令行接口
這個模塊可作為腳本發(fā)起調(diào)用以編譯多個源文件。 在 filenames 中指定的文件會被編譯并將結(jié)果字節(jié)碼以普通方式進(jìn)行緩存。 這個程序不會搜索目錄結(jié)構(gòu)來定位源文件;它只編譯顯式指定的文件。 如果某個文件無法被編譯則退出狀態(tài)為非零值。
-
位置參數(shù)是要編譯的文件。 如果 - 是唯一的形參,則文件列表將從標(biāo)準(zhǔn)輸入獲取。
-q, —quiet
屏蔽錯誤輸出。
在 3.2 版更改: 添加了對 - 的支持。
在 3.10 版更改: 添加了對 -q 的支持。
參見
模塊 compileall
編譯一個目錄樹中所有 Python 源文件的工具。
網(wǎng)頁名稱:創(chuàng)新互聯(lián)Python教程:py_compile—-編譯Python源文件
轉(zhuǎn)載來源:http://www.dlmjj.cn/article/cddppip.html


咨詢
建站咨詢
