Модифицирован скрипт сборки на основе cx_Freeze для обеспечения совместимости с основными операционными системами (Windows, macOS, Linux). Ранее скрипт был настроен преимущественно для Windows. Ключевые изменения: - **Динамическое имя файла:** Исполняемый файл получает расширение `.exe` только при сборке на Windows. - **Разделение сборок:** Для каждой целевой ОС создается своя папка (например, `build_linux`), что позволяет хранить сборки для разных систем одновременно. - **Платформо-зависимые опции:** Учтены особенности сборки для каждой ОС, включая `base="Win32GUI"` для Windows и `base=None` для Linux.
79 lines
3.0 KiB
Python
79 lines
3.0 KiB
Python
# 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
|
||
) |