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. Вы можете распространять этот файл как есть или упаковать его в архив. Убедитесь, что вы тестируете приложение на целевой платформе перед распространением.