Kompletter Rewrite
This commit is contained in:
109
build.py
109
build.py
@@ -1,20 +1,95 @@
|
||||
#!/usr/bin/env -S uv run --script
|
||||
# /// script
|
||||
# requires-python = ">=3.11"
|
||||
# dependencies = [
|
||||
# "pyinstaller>=6.11.1",
|
||||
# "PyQt5>=5.15.0",
|
||||
# "requests>=2.31.0",
|
||||
# "beautifulsoup4>=4.12.0",
|
||||
# "lxml>=4.9.0",
|
||||
# ]
|
||||
# ///
|
||||
|
||||
"""
|
||||
Build script for creating a onefile EXE of Serien-Checker using PyInstaller.
|
||||
Usage: uv run build.py
|
||||
"""
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
import PyInstaller.__main__
|
||||
import os
|
||||
import shutil
|
||||
|
||||
# Lösche alte build und dist Ordner
|
||||
if os.path.exists('build'):
|
||||
shutil.rmtree('build')
|
||||
if os.path.exists('dist'):
|
||||
shutil.rmtree('dist')
|
||||
def build_exe():
|
||||
"""Build the Serien-Checker executable."""
|
||||
|
||||
# PyInstaller Konfiguration
|
||||
PyInstaller.__main__.run([
|
||||
'serien_checker.py',
|
||||
'--onefile',
|
||||
'--windowed',
|
||||
'--name=Serien-Checker',
|
||||
'--icon=icon.ico', # Optional: Fügen Sie ein Icon hinzu wenn gewünscht
|
||||
'--add-data=series_config.json;.', # Fügt die Konfigurationsdatei hinzu wenn sie existiert
|
||||
'--clean'
|
||||
])
|
||||
# Get project root directory
|
||||
project_root = Path(__file__).parent
|
||||
|
||||
# Define paths
|
||||
main_script = project_root / "main.py"
|
||||
icon_file = project_root / "icon.ico"
|
||||
|
||||
# Verify required files exist
|
||||
if not main_script.exists():
|
||||
print(f"Error: main.py not found at {main_script}")
|
||||
sys.exit(1)
|
||||
|
||||
if not icon_file.exists():
|
||||
print(f"Error: icon.ico not found at {icon_file}")
|
||||
sys.exit(1)
|
||||
|
||||
print("Building Serien-Checker.exe...")
|
||||
print(f"Entry point: {main_script}")
|
||||
print(f"Icon: {icon_file}")
|
||||
|
||||
# PyInstaller arguments
|
||||
args = [
|
||||
str(main_script), # Entry point
|
||||
"--name=Serien-Checker", # Name of the executable
|
||||
"--onefile", # Create a single executable
|
||||
"--windowed", # No console window (GUI app)
|
||||
f"--icon={icon_file}", # Application icon (for EXE itself)
|
||||
"--noconfirm", # Replace output directory without asking
|
||||
|
||||
# Add icon.ico as data file so it's available at runtime
|
||||
f"--add-data={icon_file};.",
|
||||
|
||||
# Collect all PyQt5 submodules
|
||||
"--collect-submodules=PyQt5",
|
||||
|
||||
# Collect other third-party dependencies
|
||||
"--collect-submodules=requests",
|
||||
"--collect-submodules=bs4",
|
||||
"--collect-submodules=lxml",
|
||||
|
||||
# Hidden imports for all serien_checker submodules
|
||||
"--hidden-import=serien_checker",
|
||||
"--hidden-import=serien_checker.database",
|
||||
"--hidden-import=serien_checker.database.db_manager",
|
||||
"--hidden-import=serien_checker.database.models",
|
||||
"--hidden-import=serien_checker.scraper",
|
||||
"--hidden-import=serien_checker.scraper.browser_scraper",
|
||||
"--hidden-import=serien_checker.scraper.fernsehserien_scraper",
|
||||
"--hidden-import=serien_checker.ui",
|
||||
"--hidden-import=serien_checker.ui.main_window",
|
||||
"--hidden-import=serien_checker.ui.options_dialog",
|
||||
"--hidden-import=serien_checker.ui.widgets",
|
||||
"--hidden-import=serien_checker.utils",
|
||||
"--hidden-import=serien_checker.utils.logger",
|
||||
"--hidden-import=serien_checker.utils.threading",
|
||||
|
||||
# Collect all submodules from serien_checker package
|
||||
"--collect-submodules=serien_checker",
|
||||
]
|
||||
|
||||
# Run PyInstaller
|
||||
try:
|
||||
PyInstaller.__main__.run(args)
|
||||
print("\n✓ Build successful!")
|
||||
print(f"Executable created: {project_root / 'dist' / 'Serien-Checker.exe'}")
|
||||
except Exception as e:
|
||||
print(f"\n✗ Build failed: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
build_exe()
|
||||
|
||||
Reference in New Issue
Block a user