diff --git a/.gitignore b/.gitignore index 5f89590..2c2e986 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ /.venv/ -/.venv1/ -/.venv3/ +/setup.py +/build_cx/ diff --git a/icon.ico b/icon.ico new file mode 100644 index 0000000..866e98f Binary files /dev/null and b/icon.ico differ diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..208d80c --- /dev/null +++ b/setup.py @@ -0,0 +1,76 @@ +# setup.py +import sys +import os +from cx_Freeze import setup, Executable + +# Определите имя вашего основного скрипта +main_script = "main.py" # Замените на имя вашего основного Python-файла + +# Определите имя исполняемого файла +exe_name = "AnabasisHRChatManager" # Имя вашего .exe файла + +# Определите базовый тип приложения: +# - None: Для консольных приложений (консоль будет открываться) +# - "Win32GUI": Для графических приложений на Windows (консоль не будет открываться) +# - "MacOSX": Для графических приложений на macOS +base = None +if sys.platform == "win32": + base = "Win32GUI" # Для оконных приложений на Windows без консоли +elif sys.platform == "darwin": # Для macOS + base = "MacOSX" + +# Определите опции сборки. +# Это словарь, который настраивает, какие пакеты включать/исключать, +# какие файлы добавлять и другие параметры. +build_exe_options = { + # 'packages' - список пакетов, которые cx_Freeze должен гарантированно включить. + # Это полезно для пакетов, которые динамически импортируются или не обнаруживаются автоматически. + "packages": ["os", "sys", "requests", "json", "webbrowser"], # Пример: добавьте сюда любые используемые библиотеки + # 'excludes' - список пакетов, которые cx_Freeze должен исключить. + # Это помогает уменьшить размер сборки, исключая ненужные модули. + "excludes": ["tkinter", "unittest", "PyQt5.QtWebEngineWidgets"], # Пример: исключаем tkinter, если не используется + # 'include_files' - список дополнительных файлов или папок, которые нужно включить в сборку. + # Это могут быть изображения, конфигурационные файлы, FXML-файлы (для JavaFX, не Python) и т.д. + # Формат: [('источник', 'назначение_в_сборке')] или просто ['путь/к/файлу_или_папке'] + # Например, если у вас есть папка '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_cx", +} + +# Определите исполняемые файлы +executables = [ + Executable( + script=main_script, + base=base, + target_name=f"{exe_name}.exe", # Имя конечного .exe файла + icon="icon.ico" # Путь к файлу иконки .ico + # Для создания ярлыков в меню "Пуск" можно использовать shortcut_name и shortcut_dir здесь. + # Например: + # shortcut_name=exe_name, + # shortcut_dir="StartMenuFolder" # Создаст ярлык в меню "Пуск" в корневой папке приложения + ) +] + +# Настройте метаданные вашего приложения +setup( + name=exe_name, + version="0.1", + description="Управление чатами для HR-менеджеров", + options={ + "build_exe": build_exe_options + }, + executables=executables +) +