-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.py
More file actions
65 lines (55 loc) · 2 KB
/
build.py
File metadata and controls
65 lines (55 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import os
import shutil
import subprocess
from datetime import datetime
# Название итогового exe
APP_NAME = "GuideUploader"
ICON_FILE = "icon.ico"
ENTRY_FILE = "gui_app.py"
# Папка, куда будет складываться билд
DIST_DIR = "dist"
BUILD_DIR = "build"
def clean_old_builds():
"""Удаляем старые сборки перед новым билдом"""
for folder in [DIST_DIR, BUILD_DIR, f"{APP_NAME}.spec"]:
if os.path.exists(folder):
print(f"🧹 Удаляю {folder} ...")
if os.path.isdir(folder):
shutil.rmtree(folder)
else:
os.remove(folder)
print("✅ Очистка завершена.\n")
def build_exe():
"""Собираем exe через PyInstaller"""
cmd = [
"pyinstaller",
"--onefile",
"--windowed",
f"--name={APP_NAME}",
f"--icon={ICON_FILE}",
"--hidden-import=customtkinter",
"--hidden-import=PIL",
"--add-data", "api_config.txt;.",
"--add-data", "service_account.json;.",
"--clean",
ENTRY_FILE,
]
print("🚀 Запускаю PyInstaller...\n")
result = subprocess.run(cmd)
if result.returncode == 0:
print("\n✅ Сборка успешно завершена!")
dist_path = os.path.join(DIST_DIR, f"{APP_NAME}.exe")
if os.path.exists(dist_path):
new_name = f"{APP_NAME}.exe"
new_path = os.path.join(DIST_DIR, new_name)
os.rename(dist_path, new_path)
print(f"📦 Файл сохранён как: {new_path}")
else:
print("⚠️ Внимание: .exe файл не найден в dist/")
else:
print("❌ Ошибка при сборке. Проверь логи выше.")
if __name__ == "__main__":
print("=== 🏗️ Начинаю сборку GuideUploader ===\n")
clean_old_builds()
build_exe()
print("\n=== ✅ Готово! ===")