Найти в Дзене

PyInstaller и как его использовать на примере Astra Linux CE

Оглавление

Всем привет! 🦝 Сегодня хотелось бы дополнить мою статью про установку Python на Linux одной важной деталью. Она касается использования PyInstaller. Дополнительно рассмотрим пример использования PyInstaller на проекте White List. 🔗Ссылку на статью про проект White List оставлю ниже.

🌊вВодная часть

В своей недавней статье про установку Python в Astra Linux CE, я не учел одного важного момента.

А именно, добавление к скрипту конфигураций установки параметра --enable-shared, который добавляет общие библиотеки (они же динамические). Эти библиотеки позволяют другим программам использовать Python-интерпретатор. Давайте сегодня попробуем скомпилировать Python из исходников и добавим этот параметр в конфигурацию.

🐍Сборка Python

Снова, но уже в более короткой форме, рассмотри процесс сборки и установки Python в Astra Linux CE. Для начала давайте скачаем Python в заранее выбранную вами директорию

wget https://www.python.org/ftp/python/3.12.3/Python-3.12.3.tgz

Распакуем скачанный архив встроенной утилитой

sudo tar xzf Python-3.12.3.tgz

Переходим в распакованную директорию и смотрим её содержимое

-2

Стандартный набор установочных и не сконфигурированных файлов Python. Давайте сконфигурируем установку следующей командой и обязательно добавим параметр --enable-shared.

📌Чтобы не плодить множество питонов у себя в системе, я устанавливаю его в домашнюю директорию

sudo ./configure --enable-optimizations --enable-shared --with-openssl=/<путь_до_библиотек_ssl> --with-openssl-rpath=auto --prefix=$HOME/python3.12

❗️❗️❗️Обратите внимание! Для последующей правильной работы Python, ему требуется указать путь до библиотек openssl. Про установку openssl для Python, я писал в одной из своих статей.

После конфигурации установки можно приступать к сборке

sudo make -j 4

И давайте после сборки снова посмотрим содержимое директории установочных файлов Python

-3

Вот они, эти коварные библиотеки! Давайте теперь установим Python

sudo make install

И если после установки перейти в директорию, куда установился Python, то общие библиотеки будут на своем месте - в папке lib

-4

Python успешно установлен!🎉 Осталось сделать несколько действий для его правильной работы. А именно, добавить путь к интерпретатору в переменные среды.

export PATH=<путь_к_python>/bin:$PATH

И так, как у нас теперь есть ещё общие библиотеки, до них тоже нужно указать путь.

export LD_LIBRARY_PATH=<путь_к_python>/lib:$LD_LIBRARY_PATH

📌Чтобы переменные окружения не слетали после перезапуска сессии терминала, команды экспорта нужно добавить в файл ~/.bashrc

👀Проверяем работоспособность

-5

🗜Пример использования PyInstaller

А теперь давайте попробуем скомпилировать исполняемый файл программы White List, о которой я писал совсем недавно. Для этого давайте клонируем GIT проекта в заранее выбранную вами директорию.

git clone https://github.com/winchik65/white_list

На момент написания статьи, файлов в репозитории всего три.

-6

Далее давайте создадим виртуальное окружение Python прямо в директории проекта. Для этого в терминале переходим директорию проекта white_list и пишем следующую команду:

python3.12 -m venv env

После выполнения этой команды в директории проекта появиться каталог виртуального окружения Python под название env. Теперь давайте активируем это виртуальное окружение:

source <путь_до_директории_проекта>/env/bin/activate
-7

Отлично! Название виртуального окружения в скобочках перед именем пользователя в терминале, означает, что виртуальное окружение активировано.

Далее давайте установим зависимости необходимые для проекта. Все зависимости для проектов написанных на Python принято записывать в файл requirements.txt. Для того, чтобы установить зависимости, вводим следующую команду в терминале, находясь в директории проекта:

pip install -r requirements.txt

В числе зависимостей был как раз и PyInstaller. Давайте проверим, что он установился и работает, по классике, проверим версию.

pyinstaller --version
-8

А теперь давайте попробуем собрать исполняемый файл проекта white_list для Astra Linux CE. Для этого пишем следующую команду в терминале:

pyinstaller --onefile --name whitelist whitelist.py

Пару слов о том, что за параметры тут указаны:

  • --onefile: Этот параметр указывает PyInstaller упаковать все файлы в один исполняемый файл;
  • --name whitelist: Этот параметр задает имя для исполняемого файла. В данном случае, имя исполняемого файла будет whitelist;
  • whitelist.py: Это путь к исходному скрипту на языке Python.

По окончанию процесса сборки в директории проекта появятся ещё две: dist и build.

-9

В директории dist и будет находиться скомпилированный исполняемый файл. Давайте перейдем в эту директорию в терминале и посмотри её содержимое.

-10

Здесь находится только один файл whitelist - это и есть исполняемый файл. Давайте проверим его работоспособность и попробуем зашифровать файл README.md в директории проекта. Для этого пишем команду:

./whitelist -e ../README.md
-11

А теперь расшифруем файл:

./whitelist -d ../README.md
-12

Всё прошло успешно! 🎉 Теперь вы немного узнали о том, как скомпилировать исполняемый файл программы написанной на Python.

Ну а на сегодня всё! 🦝 Спасибо за прочтение! Всем удачных компиляций!

-13