[Linux] #6 PyInstaller on Linux

如何使用 PyInstaller 將 Python 腳本打包成可執行檔案

PyInstaller 是一個專門用來將 Python 腳本打包成執行檔的工具,例如在 Windows 上的 .exe,或其他作業系統的執行檔。透過 PyInstaller,其他使用者即使沒有安裝 Python,也能執行你的程式。

以下教你如何快速上手 PyInstaller。


1. 安裝 PyInstaller

在終端機執行以下指令來安裝 PyInstaller:

pip install pyinstaller

安裝完成後,輸入以下指令確認是否安裝成功:

pyinstaller --version

若顯示版本號,表示安裝成功。


2. 基本用法

假設你有一個 Python 腳本名為 example.py,執行以下指令進行打包:

pyinstaller example.py

這樣會產生一個 dist 資料夾,裡面包含打包好的可執行檔案。


3. 常用選項

1. 單檔模式

將所有依賴及程式打包成一個單一檔案:

pyinstaller --onefile example.py

2. 隱藏終端視窗

適用於圖形界面程式,避免執行時跳出終端機視窗:

pyinstaller --noconsole example.py

3. 自訂圖示

如果想要加入程式圖示,可以使用 --icon 指定圖示檔案(需為 .ico 格式):

pyinstaller --onefile --icon=myicon.ico example.py

4. 完整範例

結合上述選項:

pyinstaller --onefile --noconsole --icon=myicon.ico example.py

4. 打包後的檔案結構

執行 PyInstaller 後,會產生以下檔案與資料夾:

  • build 資料夾:臨時檔案,供打包過程使用,可忽略。
  • dist 資料夾:包含打包後的可執行檔案。
  • .spec 檔案:PyInstaller 的配置檔案,可供修改後重新打包使用。

5. 解決常見問題

問題 1:執行檔過大

PyInstaller 將所有依賴一起打包,因此檔案可能較大。可以使用壓縮工具 UPX 優化大小:

  1. 安裝 UPX:
    sudo apt install upx  # Ubuntu/Debian
    
  2. 使用 UPX 壓縮:
    pyinstaller --onefile --noconsole --upx-dir=/path/to/upx example.py
    

問題 2:模組缺失

有時候某些動態導入的模組無法被 PyInstaller 自動識別,可以用 --hidden-import 指定:

pyinstaller --onefile --hidden-import=<模組名稱> example.py

問題 3:跨平台打包

PyInstaller 必須在目標平台執行。例如,要打包 Windows 程式,需在 Windows 上運行 PyInstaller。如果需要在其他作業系統上製作執行檔,建議使用虛擬機或 Docker。