64 lines
1.9 KiB
RPMSpec
64 lines
1.9 KiB
RPMSpec
# -*- 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'),
|
|
# Пустой опросник MU (для «Справка → Пустой опросник»)
|
|
('dokogen/data', 'dokogen/data'),
|
|
# Иконка приложения (для окна программы в exe)
|
|
('dokogen/icon.ico', 'dokogen'),
|
|
]
|
|
|
|
# ---------- Словари 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='dokogen/icon.ico',
|
|
)
|