feat: сборка в exe (PyInstaller)
- dokogen.spec: упаковка dictionaries/, data/, словарей pymorphy3, скрытые импорты lxml/openpyxl; один файл dist/DokoGen.exe - build_exe.bat: установка PyInstaller + зависимостей + сборка
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
"""DokoGen — spec для PyInstaller.
|
||||
|
||||
Сборка: py -m PyInstaller --clean --noconfirm dokogen.spec
|
||||
Результат: dist/DokoGen.exe (один файл, запускается на любом Windows без Python).
|
||||
"""
|
||||
import sys
|
||||
from PyInstaller.utils.hooks import collect_data_files, collect_submodules
|
||||
|
||||
# ---------- Данные приложения ----------
|
||||
datas = [
|
||||
# Справочники (defense_tools.json, pd_actions.json, pd_items.json, pd_categories.json)
|
||||
('dokogen/dictionaries', 'dokogen/dictionaries'),
|
||||
# Пустой опросник 152-ФЗ (для «Справка → Пустой опросник»)
|
||||
('dokogen/data', 'dokogen/data'),
|
||||
]
|
||||
|
||||
# ---------- Словари pymorphy3 (обязательно!) ----------
|
||||
# Без них склонение организаций/ФИО в exe не будет работать.
|
||||
datas += collect_data_files('pymorphy3_dicts_ru')
|
||||
datas += collect_data_files('pymorphy3')
|
||||
|
||||
# ---------- Скрытые импорты ----------
|
||||
hiddenimports = collect_submodules('pymorphy3') + collect_submodules('pymorphy3_dicts_ru')
|
||||
hiddenimports += [
|
||||
'lxml', 'lxml.etree', 'lxml._elementpath',
|
||||
'openpyxl', 'openpyxl.cell._writer',
|
||||
]
|
||||
|
||||
a = Analysis(
|
||||
['main.py'],
|
||||
pathex=[],
|
||||
binaries=[],
|
||||
datas=datas,
|
||||
hiddenimports=hiddenimports,
|
||||
hookspath=[],
|
||||
hooksconfig={},
|
||||
runtime_hooks=[],
|
||||
excludes=[],
|
||||
noarchive=False,
|
||||
)
|
||||
|
||||
pyz = PYZ(a.pure)
|
||||
|
||||
exe = EXE(
|
||||
pyz,
|
||||
a.scripts,
|
||||
a.binaries,
|
||||
a.datas,
|
||||
[],
|
||||
name='DokoGen',
|
||||
debug=False,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
upx_exclude=[],
|
||||
runtime_tmpdir=None,
|
||||
console=False, # GUI-приложение, без консоли
|
||||
disable_windowed_traceback=False,
|
||||
icon=None,
|
||||
)
|
||||
Reference in New Issue
Block a user