From 0b92aab49b2d1ac1ae2f77d93d0d53b535e193f5 Mon Sep 17 00:00:00 2001 From: DokoGen Date: Mon, 3 Aug 2026 21:49:21 +0400 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B8=D0=BA=D0=BE=D0=BD=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?(dokogen/icon.ico)=20=D0=BF=D0=BE=D0=B4=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BA=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dokogen.spec | 61 +++++++++++++++++++++++++++++++++++++++++++++++ dokogen/icon.ico | Bin 0 -> 657 bytes 2 files changed, 61 insertions(+) create mode 100644 dokogen.spec create mode 100644 dokogen/icon.ico diff --git a/dokogen.spec b/dokogen.spec new file mode 100644 index 0000000..85ac2f5 --- /dev/null +++ b/dokogen.spec @@ -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='dokogen/icon.ico', +) diff --git a/dokogen/icon.ico b/dokogen/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..87c9b593b87719b9a5d45691c8c9bb79d285d119 GIT binary patch literal 657 zcmV;C0&e{P0096201yxW0000W0DA%e02TlM0EtjeM-2)Z3IG5A4M|8uQUCw|5C8xG z5C{eU001BJ|6u?C0zyedK~#90rIO2Q6Hye#zk6@e&a_Qa(=Mz}#8Odosol7+3qcS; zgai@0aiJ)Py6ZwaEiU{A6kG^Za5Y^Cx^fXkumlmL*7~ANvBV^`jp<~P$=tbfj|(;Q zDT+Tha1NLA9qu_FunfzxI1#N0{4Yc#HhPOJFN($D=6F0FtJmuU0ES^O$8lW7Sl%My zBaG?w)Hwi@%jMlc5R{Zsfl^8;rKB$d>C2!@L}vkD(zcq&0$(j406pm$$r?aJ{KJZ}TNi-hst7PAXwTaC3uP5h6+YQ`gj15tmA^_BiC2G>TAe(c& zUCfE3?vFN+x4*s9&~?_zuOBP$$=L(NL}jSo+~{C6-b26JQd#L z!dOh`U8abJWq1IPT)xC00GXyR%r?UUfZKzo(*qXN~O|)YRx0JS|i7CiAYl>^Xkj3Ge_v@@F{wJZcBRn1RnoBBmGJm zMgk3v6W5Tg0n>uKNZ*y~?Ax?>!WAPXELAO_GHSN;hGfM}JAu*z1p rZHr_w*{H|H#u|AlmD2dvsei){8jw-KazsPN00000NkvXXu0mjfF~cTR literal 0 HcmV?d00001