Files
AnabasisChatRemove/setup.py
Alex 6aa50b03da feat(build): Добавлена кросс-платформенная поддержка в setup.py
Модифицирован скрипт сборки на основе cx_Freeze для обеспечения совместимости с основными операционными системами (Windows, macOS, Linux). Ранее скрипт был настроен преимущественно для Windows.

Ключевые изменения:
- **Динамическое имя файла:** Исполняемый файл получает расширение `.exe` только при сборке на Windows.
- **Разделение сборок:** Для каждой целевой ОС создается своя папка (например, `build_linux`), что позволяет хранить сборки для разных систем одновременно.
- **Платформо-зависимые опции:** Учтены особенности сборки для каждой ОС, включая `base="Win32GUI"` для Windows и `base=None` для Linux.
2025-07-24 23:43:27 +03:00

79 lines
3.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# setup.py
import sys
import os
from cx_Freeze import setup, Executable
# --- Основные настройки ---
# Имя вашего основного скрипта
main_script = "main.py" # Замените на имя вашего основного Python-файла
# Имя вашего приложения (исполняемого файла без расширения)
exe_name = "AnabasisHRChatManager"
# --- Платформо-зависимые настройки ---
# Определяем базовый тип приложения и имя конечного файла
base = None
target_name = exe_name
icon_path = "icon.ico" # Путь к иконке по умолчанию
if sys.platform == "win32":
# Для графических приложений на Windows (консоль не будет открываться)
base = "Win32GUI"
# Добавляем расширение .exe для Windows
target_name = f"{exe_name}.exe"
elif sys.platform == "darwin": # macOS
base = "MacOSX"
# Иконки для macOS имеют формат .icns
# icon_path = "icon.icns"
elif sys.platform.startswith("linux"): # Linux
# Для Linux обычно не требуется специальный 'base'
# Иконки могут быть в формате .png или .xpm
# icon_path = "icon.png"
pass # Оставляем base = None
# --- Опции сборки ---
# Общие опции сборки для всех платформ
build_exe_options = {
# 'packages' - список пакетов для обязательного включения.
"packages": ["os", "sys", "requests", "json", "webbrowser"],
# 'excludes' - список пакетов для исключения.
"excludes": ["tkinter", "unittest", "PyQt5.QtWebEngineWidgets"],
# 'include_files' - список дополнительных файлов или папок.
# Формат: [('источник', 'назначение_в_сборке')]
"include_files": [], # Например: ["resources/", "config.ini"]
# 'build_exe' - папка для выходных файлов
"build_exe": f"build_{sys.platform}", # Создаём отдельную папку для каждой ОС
}
# Опции, специфичные для Windows
if sys.platform == "win32":
build_exe_options["include_msvcr"] = True # Включаем C++ Runtime Library
# --- Определение исполняемого файла ---
executables = [
Executable(
script=main_script,
base=base,
target_name=target_name, # Имя конечного файла
icon=icon_path # Путь к файлу иконки
)
]
# --- Настройка метаданных и запуск сборки ---
setup(
name=exe_name,
version="1.2",
description="Управление чатами для HR-менеджеров",
options={
"build_exe": build_exe_options
},
executables=executables
)