㈠ python 「編譯的」 Python 文件的理解是什麼
為了加快載入模塊的速度,Python 會在 __pycache__ 目錄下以 mole.version.pyc 名字緩存每個模塊編譯後的版本,這里的版本編制了編譯後文件的格式。它通常會包含 Python 的版本號。例如,在 CPython 3.3 版中,spam.py 編譯後的版本將緩存為 __pycache__/spam.cpython-33.pyc。這種命名約定允許有不同發布和不同版本的 Python 編譯的模塊同時存在。
Python 會檢查源文件與編譯版的修改日期以確定它是否過期並需要重新編譯。這是完全自動化的過程。同時,編譯後的模塊是跨平台的,所以同一個庫可以在不同架構的系統之間共享。
Python 不檢查在兩個不同環境中的緩存。首先,它會永遠重新編譯而且不會存儲直接從命令行載入的模塊。其次,如果沒有源模塊它不會檢查緩存。若要支持沒有源文件(只有編譯版)的發布,編譯後的模塊必須在源目錄下,並且必須沒有源文件的模塊。
部分高級技巧:
為了減少一個編譯模塊的大小,你可以在 Python 命令行中使用 -O 或者 -OO。-O 參數刪除了斷言語句,-OO 參數刪除了斷言語句和 __doc__ 字元串。
因為某些程序依賴於這些變數的可用性,你應該只在確定無誤的場合使用這一選項。「優化的」 模塊有一個 .pyo 後綴而不是 .pyc 後綴。未來的版本可能會改變優化的效果。
來自 .pyc 文件或 .pyo 文件中的程序不會比來自 .py 文件的運行更快;.pyc 或 .pyo 文件只是在它們載入的時候更快一些。
compileall 模塊可以為指定目錄中的所有模塊創建 .pyc 文件(或者使用 -O 參數創建 .pyo 文件)。
在 PEP 3147 中有很多關這一部分內容的細節,並且包含了一個決策流程。
㈡ python生成的py文件怎麼加密
使用任意加密演算法,或者按照隨機的密鑰進行錯亂擺放,即可起到加密的效果。這兩種方法都沒有破解方案
㈢ Python中的pyc文件
Python中的模塊文件有多種格式,包括.py, .pyc, .pyo, .pyd, .so和.dll等。
.pyd文件是.py文件編譯後的二進制文件,適用於商業軟體發布。
pyc文件是Python編譯後的跨平台二進制文件。生成pyc文件的步驟是:編譯.py文件後,將生成的文件命名為test.cpython-36.pyc,再重新命名即可。
值得注意的是,不同版本的Python編譯後的pyc文件是不兼容的,所以使用pyc文件時需注意版本匹配。
為了批量編譯.py文件為二進制文件,可以使用Python的compileall模塊。只需將該模塊應用於指定的文件夾,即可自動將所有.py文件編譯成二進制形式。