Github 操作:PyInstaller 构建损坏的 .exe

问题描述 投票:0回答:1

.yaml 文件

name: Package offlineEditor.exe
on:
  workflow_dispatch:
  push:
    branches: ["master", "main"]

jobs:
  build:
    strategy:
      matrix:
        os: ['windows-latest', 'ubuntu-latest']
        python-version: ["3.10"]
    runs-on: ${{ matrix.os }}
        
    steps:
      - uses: actions/checkout@v4
        name: Checkout

      - uses: actions/setup-python@v5
        name: Setup Python
        with:
          python-version: ${{ matrix['python-version'] }}

      - name: Refresh data folder from source
        run: |
          rm -r compiled/editor/data
          cp -r src/data/ compiled/editor/data/

      - name: Build Executables (Windows)
        if: ${{ matrix.os == 'windows-latest' }}
        run: |
          Remove-Item -Path "compiled/editor/offlineEditor-windows.exe" -Force -ErrorAction SilentlyContinue
          pip install pyinstaller
          pyinstaller --distpath compiled/editor --workpath /tmp/win/ --name offlineEditor-windows.exe --clean --icon="src/data/icon.ico" -F src/main.py

      - name: Upload Artifacts (Windows)
        if: ${{ matrix.os == 'windows-latest' }}
        uses: actions/upload-artifact@v4
        with:
          name: offlineEditor-artifact-windows
          path: compiled/editor/offlineEditor-windows.exe

      - name: Build Executables (Linux)
        if: ${{ matrix.os == 'ubuntu-latest' }}
        run: |
          rm -rf compiled/editor/offlineEditor-linux.sh
          pip install pyinstaller
          pyinstaller --distpath compiled/editor --workpath /tmp/linux/ --name offlineEditor-linux.sh --clean --icon="src/data/icon.ico" -F src/main.py

      - name: Upload Artifacts (Linux)
        if: ${{ matrix.os == 'ubuntu-latest' }}
        uses: actions/upload-artifact@v4
        with:
          name: offlineEditor-artifact-linux
          path: compiled/editor/offlineEditor-linux.sh

      - name: Commit Artifacts
        if: always()  # Stellen sicher, dass dieser Schritt immer ausgeführt wird
        run: |
          git config --global user.email "[email protected]"
          git config --global user.name "GitHub Actions"
          git pull origin main  # Aktualisieren Sie zuerst lokale Änderungen
          git add .
          git commit -m "Automated build"
          git push origin main

我尝试使用 python 代码从存储库自动构建 .exe 或 .sh。 用于构建 Windows 可执行文件的完全相同的命令在我的 powershell 上运行得非常好,并生成 ~8mb 大的 .exe

github-action 中的那个有 6.8mb 并且无法运行。

对于 Linux,我想我还需要设置 chmod +x 等等?或者人们需要做他们自己的事情吗?

目标是让 2 个可执行文件能够在各自的操作系统下运行。

github continuous-integration github-actions pyinstaller workflow
1个回答
0
投票

我以前也遇到过类似的问题。我能够使用以下方法之一(1 或 2)解决它:

  1. 设置 PYTHONPATH。

    在运行 PyInstaller 的步骤中,尝试按如下方式设置 PYTHONPATH 环境变量:

    - name: Build Executables (Windows)
      env: 
        PYTHONPATH: ${{ github.workspace }}
      run: |
        pyinstaller src/main.py
    
  2. 安装您的自定义包。

    使用

    setup.py
    或其他方法使您的自定义包可安装。然后,在安装依赖项的过程中,使用命令
    pip install -e .
    。 这是一个例子:

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install pyinstaller
        pip install -r requirements.txt
        pip install -e .
    

请注意,原始回复是用日语写的,作者使用翻译工具进行翻译。因此,翻译的准确性可能会有所不同。

© www.soinside.com 2019 - 2024. All rights reserved.