Simplify build: use pyinstaller directly, add better error handling
This commit is contained in:
16
.github/workflows/build-windows.yml
vendored
16
.github/workflows/build-windows.yml
vendored
@@ -24,22 +24,12 @@ jobs:
|
|||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
python -m pip install --upgrade pip
|
python -m pip install --upgrade pip setuptools wheel
|
||||||
pip install -r requirements_windows.txt
|
pip install -r requirements_windows.txt
|
||||||
|
|
||||||
- name: Verify build setup
|
|
||||||
run: |
|
|
||||||
echo "Python version:"
|
|
||||||
python --version
|
|
||||||
echo "Installed packages:"
|
|
||||||
pip list
|
|
||||||
echo "Current directory:"
|
|
||||||
cd %CD%
|
|
||||||
echo "Files in directory:"
|
|
||||||
dir /B
|
|
||||||
|
|
||||||
- name: Build executable with PyInstaller
|
- name: Build executable with PyInstaller
|
||||||
run: python build_exe.py
|
run: |
|
||||||
|
pyinstaller label_printer_gui.py --onefile --windowed --name=LabelPrinter --distpath=./dist --buildpath=./build --hidden-import=kivy --hidden-import=kivy.core.window --hidden-import=kivy.core.text --hidden-import=kivy.core.image --hidden-import=kivy.uix.boxlayout --hidden-import=kivy.uix.gridlayout --hidden-import=kivy.uix.label --hidden-import=kivy.uix.textinput --hidden-import=kivy.uix.button --hidden-import=kivy.uix.spinner --hidden-import=kivy.uix.scrollview --hidden-import=kivy.uix.popup --hidden-import=kivy.clock --hidden-import=kivy.graphics --hidden-import=PIL --hidden-import=barcode --hidden-import=reportlab --hidden-import=print_label --hidden-import=print_label_pdf
|
||||||
|
|
||||||
- name: Upload Windows executable as artifact
|
- name: Upload Windows executable as artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
|
|||||||
19
build_exe.py
19
build_exe.py
@@ -7,14 +7,14 @@ If run on Linux/macOS, it will create a Linux/macOS binary that won't work on Wi
|
|||||||
|
|
||||||
To build for Windows:
|
To build for Windows:
|
||||||
1. Copy this project to a Windows machine
|
1. Copy this project to a Windows machine
|
||||||
2. Install dependencies: pip install -r requirements_gui.txt
|
2. Install dependencies: pip install -r requirements_windows.txt
|
||||||
3. Run this script: python build_exe.py
|
3. Run this script: python build_exe.py
|
||||||
4. The Windows .exe will be created in the dist/ folder
|
4. The Windows .exe will be created in the dist/ folder
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from PyInstaller import __main__ as pyi_main
|
import subprocess
|
||||||
|
|
||||||
# Get the current directory
|
# Get the current directory
|
||||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
@@ -58,8 +58,9 @@ if __name__ == '__main__':
|
|||||||
# Change to script directory
|
# Change to script directory
|
||||||
os.chdir(script_dir)
|
os.chdir(script_dir)
|
||||||
|
|
||||||
# Run PyInstaller
|
# Run PyInstaller directly with subprocess for better error reporting
|
||||||
pyi_main.run(args)
|
try:
|
||||||
|
result = subprocess.run(['pyinstaller'] + args, check=True)
|
||||||
|
|
||||||
print("\n" + "=" * 60)
|
print("\n" + "=" * 60)
|
||||||
print("Build Complete!")
|
print("Build Complete!")
|
||||||
@@ -70,3 +71,13 @@ if __name__ == '__main__':
|
|||||||
print("2. Share the exe with others")
|
print("2. Share the exe with others")
|
||||||
print("3. Create a shortcut on desktop")
|
print("3. Create a shortcut on desktop")
|
||||||
print("\nNote: First run may take a moment as Kivy initializes")
|
print("\nNote: First run may take a moment as Kivy initializes")
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
print("\n" + "=" * 60)
|
||||||
|
print("Build Failed!")
|
||||||
|
print("=" * 60)
|
||||||
|
print(f"\nError code: {e.returncode}")
|
||||||
|
print("\nPlease check the error messages above for details.")
|
||||||
|
sys.exit(1)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"\nFatal error: {e}")
|
||||||
|
sys.exit(1)
|
||||||
|
|||||||
Reference in New Issue
Block a user