Pyinstaller#

Pyinstaller — это популярный инструмент для упаковки Python-приложений в standalone-исполняемые файлы. Это означает, что вы можете создать единый исполняемый файл, который будет содержать всё необходимое для запуска вашего приложения, включая интерпретатор Python и все зависимости. Это особенно полезно для распространения приложений на компьютеры, где Python или необходимые библиотеки не установлены.

Основные пакеты

Пакет

Версия

Репозиторий

Описание

python3-pyinstaller

5.13.0-0kali2

extended

Преобразует (упаковывает) программы Python в автономные исполняемые файлы

Установка Pyinstaller#

  • установить пакет и необходимые зависимости:

sudo apt install python3-installer

Основное использование#

Пункт 1#

Создание исполняемого файла

  • предположим, у вас есть Python-скрипт my_app.py, чтобы создать исполняемый файл, выполните команду:

pyinstaller my_app.py
  • после выполнения этой команды PyInstaller:

    Создаст папку dist, в которой будет находиться исполняемый файл.

    Создаст папку build, где хранятся временные файлы.

    Создаст файл my_app.spec, который содержит конфигурацию для сборки.

Пункт 2#

Запуск исполняемого файла

  • перейдите в папку dist и найдите там исполняемый файл. В ALSE это будет файл без расширения (например, my_app).

Полезные опции PyInstaller#

PyInstaller предоставляет множество опций для настройки процесса сборки. Вот некоторые из них:

Пункт 1#

Создание одного исполняемого файла

  • чтобы создать один файл (все зависимости будут упакованы внутри него), используйте флаг –onefile:

pyinstaller --onefile my_app.py

Пункт 2#

Указание иконки

  • чтобы добавить иконку для вашего приложения, используйте флаг –icon:

pyinstaller --onefile --icon=my_icon.ico my_app.py

Примечание: В ALSE иконка должна быть в формате .png или .ico.

Пункт 2#

Указание имени исполняемого файла

  • чтобы задать имя выходного файла, используйте флаг –name:

pyinstaller --name MyAwesomeApp my_app.py

Пункт 3#

Добавление дополнительных файлов

  • если вашему приложению нужны дополнительные файлы (например, изображения или конфигурации), используйте флаг –add-data:

pyinstaller --add-data "images/*.png:images" my_app.py

Пример: Создание GUI-приложения с PyQt5#

Пункт 1#

  • предположим, у вас есть простое GUI-приложение на PyQt:

# my_app.py
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Hello, PyInstaller")
label = QLabel("This is a PyQt application!", window)
window.show()
sys.exit(app.exec_())

Пункт 2#

  • чтобы создать исполняемый файл, выполните:

pyinstaller --onefile --windowed --icon=app_icon.ico my_app.py

–onefile: Создаёт один исполняемый файл.

–windowed: Скрывает консоль (актуально для GUI-приложений).

–icon: Указывает иконку для приложения.

Работа с .spec файлом#

Файл .spec — это конфигурационный файл, который PyInstaller создаёт при первой сборке. Вы можете редактировать его для более тонкой настройки процесса сборки. Например:

# my_app.spec
# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

a = Analysis(
    ['my_app.py'],
    pathex=['/path/to/your/project'],
    binaries=[],
    datas=[('images/*.png', 'images')],  # Добавление дополнительных файлов
    hiddenimports=[],
    hookspath=[],
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
    pyz,
    a.scripts,
    [],
    exclude_binaries=True,
    name='MyAwesomeApp',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=False,  # Скрыть консоль
    icon='app_icon.ico',  # Иконка
)
coll = COLLECT(
    exe,
    a.binaries,
    a.zipfiles,
    a.datas,
    strip=False,
    upx=True,
    upx_exclude=[],
    name='MyAwesomeApp',
)
  • чтобы собрать проект с использованием .spec файла, выполните:

pyinstaller my_app.spec

Распространение приложения#

После сборки ваше приложение будет находиться в папке dist. Вы можете распространять этот файл как есть или упаковать его в архив. Убедитесь, что вы тестируете приложение на целевой платформе перед распространением.