Инструменты сборки: от Python до EXE

Раздел: Инструменты -> Сборка приложений

Обзор инструментов конвертации Python в EXE

Как преобразовать Python-скрипт в exe-файл с минимальными усилиями, используя графический интерфейс?

Наиболее эффективным решением для новичков и пользователей, предпочитающих визуальный подход, является утилита auto-py-to-exe. Она представляет собой надстройку над PyInstaller, предоставляющую интуитивно понятное окно для настройки всех параметров сборки.

Установка выполняется через pip:

pip install auto-py-to-exe

Python code compiler (компилятор python (превращение в exe))

После установки запуск осуществляется командой:

auto-py-to-exe

Auto py to exe (конвертация python в exe (auto-py-to-exe))

Откроется браузер с интерфейсом, где необходимо указать путь к исходному скрипту, выбрать режим (One File или One Directory), настроить консоль (отображать или скрыть), добавить иконку, дополнительные файлы и т.д. После нажатия кнопки Convert .py to .exe начнётся сборка. Готовый exe-файл появится в папке output.

Пояснение шагов:
- Script Location - выбор основного скрипта.
- One File - упаковка всех зависимостей в один исполняемый файл (удобно для распространения).
- Console Window - включение/отключение окна терминала (для GUI-приложений обычно отключают).
- Icon - задание иконки exe-файла.
- Additional Files - включение в сборку вспомогательных файлов (базы данных, изображения и т.п.).

Типичные проблемы: антивирусное ПО может блокировать созданный exe (решение - подписывать файл цифровой подписью или добавлять в исключения). Размер файла может быть большим из-за включения интерпретатора Python (рекомендуется использовать виртуальное окружение с минимумом зависимостей). При скрытии консоли возможна потеря stdout/stderr, что затрудняет отладку.

Как собрать exe с точным контролем параметров через командную строку, используя PyInstaller напрямую?

PyInstaller - базовая библиотека, которую использует auto-py-to-exe. Она предоставляет более гибкие возможности, но требует знания команд. Установка: pip install pyinstaller. Пример команды для создания однофайлового exe без консоли:

pyinstaller --onefile --noconsole --icon=icon.ico my_script.py

как из кода python сделать приложение (упаковка python кода в приложение)

Опции:
- --onefile - упаковка в один файл.
- --noconsole - скрытие консольного окна.
- --icon - указание иконки.
- --hidden-import - форсирование импорта модулей, которые не были обнаружены автоматически.

Распространённые ошибки: модули не находятся (используйте --hidden-import), динамические импорты (используйте хуки или --collect-all), проблемы с многопроцессорностью (добавьте --multiprocessing-fork).

Как создать exe для Windows с минимальными зависимостями с помощью py2exe?

Py2exe - старый, но иногда полезный инструмент для сборки под Windows. Установка: pip install py2exe. Требуется создать setup.py:

from distutils.core import setup
import py2exe

setup(console=['my_script.py'])

Затем выполнить python setup.py py2exe. Созданный exe будет в папке dist.

Недостатки: не обновляется, поддерживает только Python 2 и ранние версии Python 3. Многие современные библиотеки не работают.

Как собрать кроссплатформенный exe с гибким управлением зависимостями через cx_Freeze?

Cx_Freeze - кроссплатформенный инструмент (Windows, Linux, macOS). Установка: pip install cx-Freeze. Пример setup.py:

from cx_Freeze import setup, Executable

setup(
name='MyApp',
version='1.0',
executables=[Executable('my_script.py', base='Win32GUI')]
)

Сборка: python setup.py build. Настройка дополнительных файлов через include_files.

Сложности: автоматическое обнаружение зависимостей несовершенно - нужно вручную добавлять модули через packages или includes. На macOS могут возникнуть проблемы с правами доступа.

Как получить оптимизированный бинарник с ускорением выполнения через Nuitka?

Nuitka компилирует Python-код в C++, затем в машинный код, что может повысить производительность. Установка: pip install nuitka. Требуется компилятор C++ (например, MSVC для Windows). Пример команды для однофайлового exe с иконкой и без консоли:

nuitka --standalone --onefile --windows-disable-console --windows-icon-from-ico=icon.ico my_script.py

Сборка может занимать много времени. Результат - exe файл в папке my_script.dist или одиночный файл (с опцией --onefile).

Основные проблемы: долгая компиляция, большой размер временных файлов, необходимость вручную указывать все зависимости (плагины, включая tkinter). Также возможны ошибки при использовании динамических типов.

Расширенный пример настройки auto-py-to-exe с конфигурационным JSON

Утилита auto-py-to-exe позволяет сохранять и загружать конфигурацию в формате JSON. Это удобно для автоматизации повторяющихся сборок. Создадим файл config.json:

Пример
{
  "scriptLocation": "C:\\MyProject\\main.py",
  "onefile": true,
  "console": false,
  "icon": "C:\\MyProject\\icon.ico",
  "additionalFiles": [
    {"source": "C:\\MyProject\\data", "destination": "data"},
    {"source": "C:\\MyProject\\config.ini", "destination": "."}
  ],
  "hiddenImports": ["cv2", "numpy"],
  "outputDirectory": "C:\\MyProject\\output"
}

Затем запускаем сборку командой:

Пример
auto-py-to-exe --config config.json

Результат: в папке output появится однофайловый exe main.exe с иконкой, скрытой консолью и встроенными файлами из папки data и config.ini. Вывод в терминале (пример):

Auto Py To Exe started
Reading config from config.json
Building...
Successfully created C:\MyProject\output\main.exe

Пример PyInstaller с форсированием импорта и коллекционированием данных

Для скрипта, который использует библиотеку OpenCV и загружает модели из папки models, требуется убедиться, что все зависимости собраны. Команда:

Пример
pyinstaller --onefile --noconsole --hidden-import cv2 --hidden-import numpy \
  --add-data "models;models" --icon app.ico main.py

Здесь --add-data копирует папку models в корень собранного приложения. Вывод:

112 INFO: PyInstaller: 5.13.0
112 INFO: Python: 3.11.4
...
19710 INFO: Building EXE from EXE-00.toc completed successfully.
19710 INFO: Appending archive to EXE: C:\dist\main.exe

Файл main.exe будет иметь размер около 50-80 МБ (из-за OpenCV). При запуске он будет искать папку models в своём временном каталоге.

Пример Nuitka с плагинами и оптимизацией размера

Для скрипта с tkinter интерфейсом и использованием PIL (Pillow) можно скомпилировать с помощью Nuitka следующими командами:

Пример
nuitka --standalone --onefile --enable-plugin=tk-inter \
  --enable-plugin=image-formats \
  --windows-icon-from-ico=icon.ico \
  --lto --remove-output gui_app.py

Параметры:
- --enable-plugin=tk-inter - поддержка tkinter,
- --enable-plugin=image-formats - поддержка форматов изображений (через Pillow),
- --lto - межмодульная оптимизация (Link Time Optimization),
- --remove-output - удаление временных файлов после сборки.

Результат компиляции:

Nuitka: Version 1.8.4
...
Compiled to: C:\Users\user\gui_app.dist\gui_app.exe (single file: gui_app.exe)
Done, final exe size: 15.2 MB.

Запуск gui_app.exe открывает окно tkinter без консоли.

Конвертация Python в exe (auto-py-to-exe) - comments

En
Auto py to exe (python)