# -*- mode: python ; coding: utf-8 -*- """ PyInstaller Konfiguration für DocuMentor Erstellt eine eigenständige Windows-Executable ohne Python-Installation """ import sys from pathlib import Path from PyInstaller.utils.hooks import collect_all block_cipher = None # Projektpfad project_root = Path(SPECPATH) src_path = project_root / 'src' # connectorx komplett sammeln (Python-Code, native .pyd und Metadaten) # PyInstaller erkennt connectorx nicht automatisch, da es zur Laufzeit # von polars per importlib.import_module() geladen wird cx_datas, cx_binaries, cx_hiddenimports = collect_all('connectorx') # Alle UI-Dateien sammeln ui_files = [] for ui_file in (src_path / 'ui').glob('*.ui'): ui_files.append((str(ui_file), 'ui')) # Ressource-Dateien (SQL, CSV) einbinden res_files = [] for res_file in (src_path / 'res').glob('*'): res_files.append((str(res_file), 'res')) a = Analysis( [str(src_path / 'main.py')], pathex=[str(src_path)], binaries=cx_binaries, datas=ui_files + res_files + cx_datas + [ (str(project_root / 'pyproject.toml'), '.'), (str(project_root / 'THIRD_PARTY_LICENSES.txt'), '.'), ], hiddenimports=[ 'PySide6.QtCore', 'PySide6.QtGui', 'PySide6.QtWidgets', 'pydantic', 'pydantic_settings', 'pydantic_yaml', 'polars', 'pyarrow', ] + cx_hiddenimports, hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False, ) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE( pyz, a.scripts, [], exclude_binaries=True, name='DocuMentor', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, console=False, # Keine Konsole anzeigen (GUI-Anwendung) disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, icon=str(project_root / 'resources' / 'icon.ico') if (project_root / 'resources' / 'icon.ico').exists() else None, version=str(project_root / 'version_info.txt') if (project_root / 'version_info.txt').exists() else None, ) coll = COLLECT( exe, a.binaries, a.zipfiles, a.datas, strip=False, upx=True, upx_exclude=[], name='DocuMentor', )