feat(build): Добавлена кросс-платформенная поддержка в setup.py
Модифицирован скрипт сборки на основе cx_Freeze для обеспечения совместимости с основными операционными системами (Windows, macOS, Linux). Ранее скрипт был настроен преимущественно для Windows. Ключевые изменения: - **Динамическое имя файла:** Исполняемый файл получает расширение `.exe` только при сборке на Windows. - **Разделение сборок:** Для каждой целевой ОС создается своя папка (например, `build_linux`), что позволяет хранить сборки для разных систем одновременно. - **Платформо-зависимые опции:** Учтены особенности сборки для каждой ОС, включая `base="Win32GUI"` для Windows и `base=None` для Linux.
This commit is contained in:
99
setup.py
99
setup.py
@@ -3,74 +3,77 @@ import sys
|
|||||||
import os
|
import os
|
||||||
from cx_Freeze import setup, Executable
|
from cx_Freeze import setup, Executable
|
||||||
|
|
||||||
# Определите имя вашего основного скрипта
|
# --- Основные настройки ---
|
||||||
|
|
||||||
|
# Имя вашего основного скрипта
|
||||||
main_script = "main.py" # Замените на имя вашего основного Python-файла
|
main_script = "main.py" # Замените на имя вашего основного Python-файла
|
||||||
|
|
||||||
# Определите имя исполняемого файла
|
# Имя вашего приложения (исполняемого файла без расширения)
|
||||||
exe_name = "AnabasisHRChatManager" # Имя вашего .exe файла
|
exe_name = "AnabasisHRChatManager"
|
||||||
|
|
||||||
# Определите базовый тип приложения:
|
# --- Платформо-зависимые настройки ---
|
||||||
# - None: Для консольных приложений (консоль будет открываться)
|
|
||||||
# - "Win32GUI": Для графических приложений на Windows (консоль не будет открываться)
|
# Определяем базовый тип приложения и имя конечного файла
|
||||||
# - "MacOSX": Для графических приложений на macOS
|
|
||||||
base = None
|
base = None
|
||||||
if sys.platform == "win32":
|
target_name = exe_name
|
||||||
base = "Win32GUI" # Для оконных приложений на Windows без консоли
|
icon_path = "icon.ico" # Путь к иконке по умолчанию
|
||||||
elif sys.platform == "darwin": # Для macOS
|
|
||||||
base = "MacOSX"
|
|
||||||
|
|
||||||
# Определите опции сборки.
|
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 = {
|
build_exe_options = {
|
||||||
# 'packages' - список пакетов, которые cx_Freeze должен гарантированно включить.
|
# 'packages' - список пакетов для обязательного включения.
|
||||||
# Это полезно для пакетов, которые динамически импортируются или не обнаруживаются автоматически.
|
"packages": ["os", "sys", "requests", "json", "webbrowser"],
|
||||||
"packages": ["os", "sys", "requests", "json", "webbrowser"], # Пример: добавьте сюда любые используемые библиотеки
|
|
||||||
# 'excludes' - список пакетов, которые cx_Freeze должен исключить.
|
# 'excludes' - список пакетов для исключения.
|
||||||
# Это помогает уменьшить размер сборки, исключая ненужные модули.
|
"excludes": ["tkinter", "unittest", "PyQt5.QtWebEngineWidgets"],
|
||||||
"excludes": ["tkinter", "unittest", "PyQt5.QtWebEngineWidgets"], # Пример: исключаем tkinter, если не используется
|
|
||||||
# 'include_files' - список дополнительных файлов или папок, которые нужно включить в сборку.
|
# 'include_files' - список дополнительных файлов или папок.
|
||||||
# Это могут быть изображения, конфигурационные файлы, FXML-файлы (для JavaFX, не Python) и т.д.
|
# Формат: [('источник', 'назначение_в_сборке')]
|
||||||
# Формат: [('источник', 'назначение_в_сборке')] или просто ['путь/к/файлу_или_папке']
|
"include_files": [], # Например: ["resources/", "config.ini"]
|
||||||
# Например, если у вас есть папка 'resources' с иконками или другими данными:
|
|
||||||
# "include_files": ["resources/", "config.ini"],
|
|
||||||
# Если иконка находится в корне:
|
|
||||||
"include_files": [], # Добавьте сюда любые ресурсы
|
|
||||||
# 'include_msvcr' - для Windows, включает C++ Runtime Library (CRT)
|
|
||||||
# Часто необходимо для работы некоторых нативных модулей Python.
|
|
||||||
"include_msvcr": True,
|
|
||||||
# 'optimize' - уровень оптимизации (0, 1, 2). 2 - максимальная оптимизация, но может быть медленнее.
|
|
||||||
# "optimize": 0,
|
|
||||||
# 'zip_include_packages' - упаковывать ли пакеты в zip-файл внутри исполняемого файла.
|
|
||||||
# Уменьшает количество файлов, но может увеличить время запуска.
|
|
||||||
# По умолчанию cx_Freeze упаковывает большинство пакетов.
|
|
||||||
# "zip_include_packages": ["*"],
|
|
||||||
# 'build_exe' - папка для выходных файлов
|
# 'build_exe' - папка для выходных файлов
|
||||||
"build_exe": "build_cx",
|
"build_exe": f"build_{sys.platform}", # Создаём отдельную папку для каждой ОС
|
||||||
}
|
}
|
||||||
|
|
||||||
# Определите исполняемые файлы
|
# Опции, специфичные для Windows
|
||||||
|
if sys.platform == "win32":
|
||||||
|
build_exe_options["include_msvcr"] = True # Включаем C++ Runtime Library
|
||||||
|
|
||||||
|
# --- Определение исполняемого файла ---
|
||||||
|
|
||||||
executables = [
|
executables = [
|
||||||
Executable(
|
Executable(
|
||||||
script=main_script,
|
script=main_script,
|
||||||
base=base,
|
base=base,
|
||||||
target_name=f"{exe_name}.exe", # Имя конечного .exe файла
|
target_name=target_name, # Имя конечного файла
|
||||||
icon="icon.ico" # Путь к файлу иконки .ico
|
icon=icon_path # Путь к файлу иконки
|
||||||
# Для создания ярлыков в меню "Пуск" можно использовать shortcut_name и shortcut_dir здесь.
|
|
||||||
# Например:
|
|
||||||
# shortcut_name=exe_name,
|
|
||||||
# shortcut_dir="StartMenuFolder" # Создаст ярлык в меню "Пуск" в корневой папке приложения
|
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
# Настройте метаданные вашего приложения
|
# --- Настройка метаданных и запуск сборки ---
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name=exe_name,
|
name=exe_name,
|
||||||
version="0.1",
|
version="1.2",
|
||||||
description="Управление чатами для HR-менеджеров",
|
description="Управление чатами для HR-менеджеров",
|
||||||
options={
|
options={
|
||||||
"build_exe": build_exe_options
|
"build_exe": build_exe_options
|
||||||
},
|
},
|
||||||
executables=executables
|
executables=executables
|
||||||
)
|
)
|
||||||
|
|
||||||
Reference in New Issue
Block a user