在開發完Python程式後,常常會需要將程式打包成exe檔案,方便在其他電腦上執行。本文將詳細說明如何使用PyInstaller工具,將Python程式打包成獨立的執行檔。特別針對使用PySide6開發的GUI應用程式,提供完整的打包設定和解決方案。

打包工具介紹

PyInstaller是目前最流行的Python打包工具之一,它可以:

  • 將Python程式和所需的函式庫打包成單一執行檔
  • 自動分析程式相依性
  • 支援多種Python套件
  • 跨平台打包支援

打包的基本步驟

1. 安裝PyInstaller

首先需要安裝PyInstaller套件:

1
pip install pyinstaller

2. 準備打包環境

在打包之前,建議先建立一個獨立的虛擬環境:

1
2
3
4
5
6
7
8
9
10
11
# 建立虛擬環境
python -m venv venv

# 啟動虛擬環境
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate

# 安裝必要套件
pip install -r requirements.txt

3. PySide6特殊設定

使用PySide6開發的應用程式需要特別注意以下幾點:

  1. 確保正確引入所需的PySide6模組
  2. 處理資源檔案(圖片、樣式表等)
  3. 設定正確的打包參數

建議在程式碼中使用相對路徑存取資源檔案:

1
2
3
4
5
6
7
from pathlib import Path

# 取得程式所在目錄
BASE_DIR = Path(__file__).resolve().parent

# 載入資源檔案
style_file = BASE_DIR / 'styles.json'

4. 打包指令和參數說明

基本打包指令:

1
pyinstaller main.py

針對PySide6應用程式的完整打包指令:

1
2
3
4
5
6
7
8
pyinstaller --name="HexoEditor" ^
--windowed ^
--icon=icon.ico ^
--add-data="styles.json;." ^
--add-data="category_config.json;." ^
--add-data="tag_config.json;." ^
--hidden-import=PySide6.QtXml ^
main.py

參數說明:

  • --name: 指定輸出的執行檔名稱
  • --windowed: 不顯示命令列視窗
  • --icon: 指定應用程式圖示
  • --add-data: 加入額外的資源檔案
  • --hidden-import: 加入隱含的相依套件

5. 處理常見問題

  1. 找不到模組或檔案

    • 使用--hidden-import參數加入相依套件
    • 使用--add-data加入資源檔案
  2. 執行檔太大

    • 使用--exclude-module排除不需要的模組
    • 清理虛擬環境中不必要的套件
  3. 啟動時出現錯誤

    • 檢查是否有正確處理檔案路徑
    • 確認所有相依套件都已包含
  4. PySide6特有問題

    • 確保加入QtWebEngine相關檔案
    • 處理plugins和platforms目錄

成品檢查清單

打包完成後,建議檢查以下項目:

  • 執行檔是否可以正常啟動
  • 所有功能是否正常運作
  • 資源檔案是否正確載入
  • 是否有不必要的檔案可以清理
  • 檔案大小是否合理

結論

使用PyInstaller打包Python程式是一個相對直接的過程,但需要注意一些細節。特別是對於使用PySide6開發的GUI應用程式,正確的設定和參數選擇能夠確保打包結果的品質。希望這篇教學能幫助你順利完成程式的打包工作。

參考資料