Files
agr-assistent/agr-assistent.spec
T
mrleo1nidandClaude Opus 5 20a666e0d4 Этап 5: окно настроек и сборка exe
- Окно настроек: модель и провайдер (со списком моделей с сервера), озвучка,
  голосовой ввод, слово активации, автозапуск с Windows
- Сохранение в config.yaml через ruamel.yaml с комментариями и ссылками ${VAR},
  проверка значений до записи; переключатели трея тоже сохраняются
- Настройки LLM и переключатели применяются на лету, для остального — перезапуск
- Один экземпляр приложения, лог в файл, аргументы --config и --wait-pid, русские диалоги Qt
- Сборка PyInstaller (onedir) с библиотеками CUDA, иконка приложения
- Тесты сохранения настроек и окна настроек

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 04:10:31 +03:00

45 lines
1.5 KiB
RPMSpec

# -*- mode: python ; coding: utf-8 -*-
# Сборка: uv run pyinstaller agr-assistent.spec --noconfirm
# Результат: dist/agr-assistent/agr-assistent.exe (папка целиком переносима)
from pathlib import Path
import nvidia
from PyInstaller.utils.hooks import collect_data_files, collect_dynamic_libs, collect_submodules
datas = [("src/agr_assistent/default_config.yaml", "agr_assistent")]
datas += collect_data_files("silero_vad")
datas += collect_data_files("faster_whisper")
binaries = collect_dynamic_libs("vosk") + collect_dynamic_libs("ctranslate2")
# cuBLAS и cuDNN для распознавания на видеокарте; путь к ним добавляет stt/whisper.py
for package_dir in nvidia.__path__:
for dll in Path(package_dir).glob("*/bin/*.dll"):
binaries.append((str(dll), f"nvidia/{dll.parent.parent.name}/bin"))
# num2words подключает языковые модули динамически
hiddenimports = collect_submodules("num2words")
a = Analysis(
["packaging/launcher.py"],
pathex=["src"],
binaries=binaries,
datas=datas,
hiddenimports=hiddenimports,
excludes=["tkinter", "matplotlib", "IPython", "pytest"],
noarchive=False,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
[],
exclude_binaries=True,
name="agr-assistent",
icon="packaging/icon.ico",
console=False,
upx=False,
)
coll = COLLECT(exe, a.binaries, a.datas, name="agr-assistent", upx=False)