#看好了 GitHub Actions #我只示範一次 #GitHub Actions #Node.js #DevOps

我沒錢買 MacBook - 自動化多平台 Python 應用打包

Date
2024.10.04
Category
自動化
Read Time
8 min
Word
2.4k
Last Mod
2024.10.04
課程 2024.10.04 我沒錢買 MacBook - 自動化多平台 Python 應用打包

我沒錢買 MacBook - 自動化多平台 Python 應用打包

不如虎穴,焉得虎子,說明了 pyinstaller 要打包 macOS 的執行檔一定要在 macOS 環境運行。

為了支援多平台的 Python 應用打包(例如 Windows、macOS 和 Linux),我們可以使用 GitHub Actions 和 PyInstaller 配合使用。以下是一步步的詳細指南,介紹如何在 GitHub Actions 中設定自動化打包,生成適用於不同作業系統的可執行文件。

背景

講好久 Node.js 了,今天來點 Python 的東西。PyInstaller 是一個用於將 Python 應用程序打包為獨立可執行文件的工具。它支持 Windows、macOS 和 Linux,並且可以將 Python 程序轉換為可執行文件 (像是 .exe),讓使用者無需安裝 Python 解釋器也可以直接執行。

使用起來大概像這樣:

Bash
# 安裝 PyInstallerpip install pyinstaller# 打包成單一可執行文件pyinstaller --onefile hello.py

一般情況下,我們需要在不同的操作系統上運行 PyInstaller 來生成對應的可執行文件。比如說 Windows 的 .exe 文件不能在 macOS 上生成。而且如果直接像上面這樣打包檔案會很大,所以大家通常會安裝虛擬環境,然後在虛擬環境中執行 PyInstaller 來打包 Python 應用。

這樣就需要在不同的環境中進行打包,並且需要手動處理和分發生成的可執行文件實在有夠麻煩,你還要為了打包的程式多買一台筆電。為了提高效率,我們可以使用 GitHub Actions 來自動化這個過程,並在不同的操作系統上自動打包 Python 應用。

今日範例程式:https://github.com/elvisdragonmao/2024-GitHub-Actions/tree/main/21

準備工作

首先,請先準備一份你的 Python 文件。如果你還沒有,可以使用以下的範例程式,這是一台簡單的計算機。

Python
def calculator():    print("Python 計算機")    while True:        formula = input("請輸入運算式 (輸入 'exit' 離開): ")        if formula.lower() == 'exit':            print("再見!")            break        try:            result = eval(formula)            print(f"結果:{result}")        except Exception as e:            print(f"錯誤:{e}")if __name__ == "__main__":    calculator()

跑起來效果大概像這樣:

Text
Python 計算機請輸入運算式 (輸入 'exit' 離開): 1+2*3結果: 7

設定 GitHub Actions

我們需要配置 GitHub Actions 來在不同的操作系統上運行 PyInstaller。以下是一個例子,展示了如何在 macOS、Windows 和 Linux 上自動化打包過程。

在你的 GitHub repository 中,建立一個新的工作流程文件。例如,在 .github/workflows 目錄下建立一個名為 build-multi-platform.yml 的文件,並添加以下內容:

YAML
name: Build Multi-Platformon:  push:    branches:      - main  workflow_dispatch:jobs:  build:    strategy:      matrix:        os: [ubuntu-latest, macos-latest, windows-latest]        python-version: [3.11]    runs-on: ${{ matrix.os }}    steps:      - name: Checkout repository        uses: actions/checkout@v3      - name: Set up Python        uses: actions/setup-python@v3        with:          python-version: ${{ matrix.python-version }}      - name: Install dependencies        run: |          pip install pyinstaller      - name: Build application        run: |          pyinstaller --onefile hello.py      - name: Archive artifacts        uses: actions/upload-artifact@v3        with:          name: hello-executable-${{ matrix.os }}          path: dist/hello${{ matrix.os == 'windows-latest' && '.exe' || '' }}

詳細步驟解析

  • Checkout repository: 檢出 GitHub repository 的程式。
  • Set up Python: 安裝指定版本的 Python。
  • Install dependencies: 安裝 PyInstaller。
  • Build application: 使用 PyInstaller 打包 Python 應用,根據運行的操作系統環境變數來確定可執行文件的名稱和附檔名。
  • Archive artifacts: 上傳生成的可執行文件作為 GitHub Actions 的構建產物,供後續下載或分發使用。

測試和驗證

推送更改到 GitHub repository,然後檢查 GitHub Actions 頁面來確保工作流程成功運行。檢查生成的可執行文件是否能在對應的操作系統上正常運行。

小結

通過這篇教程,我們學會了如何在 GitHub Actions 中設定多平台的自動打包流程。這樣,我們可以在不同的操作系統上生成對應的可執行文件,並自動化打包和分發過程,提高了開發效率和應用的可用性。如果有任何問題或需要進一步的幫助,隨時告訴我!

About me

毛哥EM

這裡是毛哥EM,一隻全端開發龍還有英文辯士。
熱愛開源、音樂、設計、獸迷文化,專研人機互動與人工智慧。

本部落格皆屬原創文章,採 CC BY-SA 4.0 授權,
轉載請註明來自毛哥EM資訊密技。
這篇文章對你有幫助嗎? 考慮幫我買瓶 Red Bull?

毛哥EM 角色插圖

Comments

留言區