Преобразование Python кода в исполняемые файлы Windows и Android

В статье рассмотрим различные способы способы конвертации Python файла в .exe и .apk
12 июля 2023, среда 07:43
melok для раздела Блоги

Введение

Сегодня рассмотрим способы преобразования обычного Python файла в исполняемый файл.

Исполняемый файл- это тип файла, который может быть установлен или активирован на устройстве без необходимости в дополнительном ПО или библиотеках. Преобразовав свой Python-скрипт в исполняемый файл exe/apk, вы защитите свой код от модификаций или прочтения, а также  упростите работу с вашей программой.

Подготовка

Для начала я создам python скрипт для проверки его работоспособности после преобразования в исполняемый файл. Этот код рисует черный круг с помощью модуля turtle.

В исполняемый файл Windows

PyInstaller

Это один из популярных инструментов для создания исполняемых файлов из файлов Python. Он позволяет упаковать все зависимости вашего проекта в один исполняемый файл. Чтобы использовать PyInstaller, установите его с помощью команды в командной строке:

pip install pyinstaller 

Теперь переходим в директорию с .py файлом

cd C:\Путь_к_папке

Наиболее часто используемые аргументы PyInstaller:

  • --onefile или -F: Создает одиночный исполняемый файл, включая все зависимости.
  • --onedir или -D: Создает исполняемый файл в виде набора файлов и папок, сохраняя зависимости в отдельной папке.
  • --name или -n: Устанавливает имя исполняемого файла.
  • --icon или -i: Устанавливает лого для исполняемого файла (должна быть в формате .ico).
  • --noconsole или -w: Исполняемый файл будет запускаться без консольного окна (для скрытия консольного вывода).
  • --add-data или -a: Добавляет дополнительные файлы или папки, которые должны быть включены в исполняемый файл.
  • --exclude-module или -x: Исключает указанный модуль из упаковки.
  • --hidden-import или -p: Указывает модули, которые должны быть включены в упаковку, но не обнаружены автоматически.

Теперь давайте скомпилируем наш код в exe файл. Для этого прописываем команду:

pyinstaller файл.py

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

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

Чтобы этого избежать можно использовать аргумент --onefile или -F

pyinstaller -F файл.py

PyInstaller собрал все доп. файлы в архив и теперь в папке dist находится только нужный нам exe файл. Его можно переместить, а папки build и dist удалить.

В исполняемый файл Android

Buildozer

Это инструмент, ориентированный на Linux дистрибутивы для автоматизации сборки и упаковки приложений Python для платформы Android. Если у вас Windows, то необходимо использовать WSL или другие виртуальные машины. Ваш python файл должен быть совместимым с Android. Buidozer позволяет создавать apk  из файлов Python с минимальными усилиями. Для установки прописываем это в командной строке linux:

sudo apt update && sudo apt upgrade && sudo apt install -y git zip unzip openjdk-17-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev libssl-dev && pip install buildozer 

Теперь нужно создать .spec файл в котором будет храниться вся информация о приложении. Сначала перейдите в нужную директорию в командной строке.

buildozer init

Необходимо переименовать python файл в main.py. Открываем появивщийся buildozer.spec файл и переходим к настройке. Вот некоторые из наиболее часто используемых параметров, которые можно настроить:

  • title - Название исполняемого файла.    
  • package.name - Имя пакета вашего исполняемого файла .
  • package.domain - Доменное имя вашего приложения.
  • source.dir - Путь к .py файлу.
  • source.include_exts - Расширения файлов, которые должны быть включены в сборку.
  • version - Версия исполняемого файла.    
  • requirements - Зависимости файла.

Прописываем эту команду для запуска сборки apk приложения:

buildozer android debug

В теории после сборки вы получите apk приложение. Но далеко не факт, что все получится без ошибок, с первого раза и получится вообще, ведь