Trans_for_doctors / BUILD_WITH_UV.md
Mintik24's picture
🎉 Полный рефакторинг проекта Medical Transcriber
e275025

🚀 Сборка Windows .exe с uv - Medical Transcriber GUI

📋 Требования

  • Windows 10+ (для запуска .exe)
  • Python 3.9+ (для сборки)
  • uv - modern Python package manager
  • ~3 ГБ свободного места на диске

🔧 Установка uv

Способ 1: pip (рекомендуется)

pip install uv

Способ 2: Скачать с GitHub

https://github.com/astral-sh/uv#installation

Проверка установки

uv --version

🚀 Быстрая сборка (3 команды)

Способ 1: Автоматический скрипт (РЕКОМЕНДУЕТСЯ)

# Все в одну команду
python setup_and_build.py

Этот скрипт:

  1. ✅ Установит все зависимости через uv
  2. ✅ Установит PyInstaller
  3. ✅ Соберёт .exe приложение
  4. ✅ Выведет результат

Результат: dist\MedicalTranscriber.exe


Способ 2: Ручная сборка (Шаг за шагом)

1️⃣ Установить зависимости через uv

uv pip install -r requirements.txt

2️⃣ Установить PyInstaller

uv pip install pyinstaller>=6.0.0

3️⃣ Собрать приложение

python build_exe.py

Результат: dist\MedicalTranscriber.exe


Способ 3: Прямая команда PyInstaller через uv

uv run pyinstaller --onefile --windowed --name=MedicalTranscriber build_windows.spec

📊 Процесс сборки

1. Чтение requirements.txt
   └─> PyQt6==6.10.0 ✓
   └─> transformers ✓
   └─> torch ✓
   └─> ... остальные зависимости

2. Анализ приложения (PyInstaller)
   └─> app/gui_app.py
   └─> pipeline/medical_pipeline.py
   └─> corrector/report_generator.py
   └─> ... все модули

3. Сборка одного EXE файла
   └─> Включение всех зависимостей
   └─> Упаковка ресурсов
   └─> Оптимизация размера

4. Результат
   └─> dist/MedicalTranscriber.exe (✅ готово!)

Время сборки: 10-30 минут в первый раз


✨ Что используется

PyQt6 версия

PyQt6==6.10.0  ← Конкретная версия для совместимости
PyQt6-sip>=13.8.0  ← Поддержка bindings

uv особенности

  • ⚡ Очень быстрая установка пакетов
  • 🔒 Гарантированная версионность
  • 📦 Простое управление окружением
  • 🐍 Полная совместимость с pip

PyInstaller параметры

--onefile        # Один исполняемый файл
--windowed       # Без консоли (GUI приложение)
--name=...       # Имя приложения

🎯 Проверка перед сборкой

1. Проверить наличие модели Whisper

# Должна быть папка с моделью
ls -la | grep -E "(model|safetensors)"

2. Проверить медицинские термины

# Файл должен существовать
cat medical_terms.txt | head -5

3. Проверить конфиг

# Должен быть config.json
cat config.json

🐛 Решение проблем

Проблема: "uv: command not found"

Решение:

pip install uv
uv --version  # проверить

Проблема: "PyQt6 не совместим"

Решение:

# Переустановить точную версию
uv pip install --force PyQt6==6.10.0

Проблема: "Недостаточно памяти при сборке"

Решение:

# Закройте ненужные приложения
# Используйте float16 вместо float32 в настройках

Проблема: "Очень долгая сборка"

Решение:

# Это нормально для первой сборки (10-30 мин)
# Последующие будут быстрее благодаря кэшу
# Дождитесь завершения

Проблема: "ModuleNotFoundError при запуске .exe"

Решение:

  1. Скачайте модель Whisper
  2. Поместите в папку dist/ рядом с .exe
  3. В приложении укажите полный путь

📦 Размер и оптимизация

Типичный размер

  • Первая сборка: ~500 МБ - 1.5 ГБ
  • Почему так много?
    • torch (PyTorch) - ~500 МБ
    • transformers - ~200 МБ
    • Другие зависимости - ~300 МБ

Уменьшение размера

Способ 1: Исключить CUDA (если не нужен GPU)

# В build_windows.spec, секция hiddenimports, удалить:
# 'torch.cuda',

Способ 2: Использовать UPX компрессию

# Скачайте UPX: https://upx.github.io/
# Затем:
uv pip install pyinstaller[speedups]

Способ 3: Использовать разделённую версию (--onedir)

python build_exe.py --onedir
# Результат: папка dist/MedicalTranscriber/ вместо одного файла

🚀 Распространение

Отправить кому-то

  1. Найти файл: dist\MedicalTranscriber.exe
  2. Отправить:
    • По email (если размер позволяет)
    • На USB флешку
    • Скачать ссылку (GoogleDrive, Yandex.Disk и т.д.)

Создать установщик (опционально)

# Установите NSIS: https://nsis.sourceforge.io/
# Создайте installer.nsi (см. BUILD_EXE.md)
# Скомпилируйте
makensis installer.nsi

📈 Версионность

Обновления

Если обновили PyQt6

# Обновить requirements.txt
PyQt6==6.11.0  # новая версия

# Переустановить
uv pip install --force PyQt6==6.11.0

# Пересобрать
python build_exe.py

Если добавили новый модуль

# 1. Добавить в requirements.txt
# 2. Добавить в build_windows.spec (hiddenimports)
# 3. Пересобрать
python build_exe.py

✅ Готов к использованию?

Финальная проверка:

  • uv установлен (uv --version)
  • requirements.txt скачан
  • Модель Whisper присутствует
  • medical_terms.txt существует
  • config.json скачан

Тогда просто запустите:

# Всё в одной команде
python setup_and_build.py

# И ждите результата в dist/MedicalTranscriber.exe

📞 Справка

Документация

Ссылки


Всё готово! Начните сборку прямо сейчас! 🚀

python setup_and_build.py