Python 雖是直譯語言,但在執行前會先將 .py
原始碼編譯為位元組碼(Bytecode),產生 .pyc
或 .pyo
檔案,再由 Python 虛擬機器執行。
🔤 一、常見副檔名與用途
副檔名 | 功能說明 |
---|---|
.py | Python 原始碼,開發與執行的主要程式檔案。 |
.pyw | 與 .py 相同,但在 Windows 中以 pythonw.exe 執行,不顯示命令列視窗,常用於 GUI 程式。 |
.pyc | 編譯後的位元組碼,用於加快模組載入速度,自動由 import 時產生。 |
.pyo | 編譯後的「優化版」位元組碼(Python 3.5 前可用,現已合併至 .pyc )。 |
.pyd | Windows 平台下的動態連結庫(DLL),用 C/C++ 編寫的擴充模組,Python 可 import 。 |
⚙️ 二、位元組碼編譯與使用
✅ 1. 單一檔案手動編譯 .py → .pyc
-
file
: 原始碼路徑 -
cfile
: 輸出檔名(可選) -
dfile
: 錯誤資訊輸出位置(可選) -
doraise
: 為 True 時會主動丟出PyCompileError
✅ 2. 批次編譯整個資料夾
✅ 3. 編譯優化位元組碼 .pyo
(Python 3.5 以前)
-
-O
:開啟最佳化模式,會省略 assert、debug 等語句。 -
輸出為
.pyo
,但在 Python 3.5+ 之後已合併進.pyc
🧱 三、程式釋出方式建議
✅ 1. 打包為 EXE 檔(推薦 GUI)
使用 pyinstaller
:
-
生成
.exe
,使用者無需安裝 Python 環境。
✅ 2. 發布 .pyc
/ .pyo
適合希望保護原始碼,但使用者已有 Python 環境的情境:
-
編譯成
.pyc
再部署 -
GUI 程式可使用
.pyw
呼叫主.pyc
✅ 3. 直接發布 .py
原始碼
適合開源、教育、內部測試等情境,簡單直接,無需額外步驟。
🧠 四、補充資訊
-
.pyc
會自動生成於__pycache__
資料夾中,檔名格式為:module.cpython-XY.pyc
-
Python 3.5 起
.pyo
與.pyc
已合併為單一優化.pyc
-
.pyd
像是 Windows 的.dll
,常由 C/C++ 使用 Cython 或 CPython API 開發
📝 心得與總結
Python 雖屬直譯型語言,但實際運作中也具備「編譯階段」的概念,這使得 .pyc
/ .pyo
等位元組碼形式能提升效能並兼顧保護原始碼。針對不同的釋出場景,可以靈活選擇:
-
開源:釋出
.py
-
商用封裝:轉
.pyc
或使用pyinstaller
打包 -
GUI 程式:使用
.pyw
搭配打包工具
對於有授權、隱私、發佈需求的 Python 專案,善用副檔名與打包技巧可以讓開發流程更專業且安全。
沒有留言:
張貼留言