Установка и использование Python на Rocky Linux

Используемые термины: Python, Rocky Linux.
Данная инструкция будет небольшой шпаргалкой по работе с Python на Rocky Linux (RPM based). Также мы рассмотрим некоторые служебные команды и разберем возможные ошибки, с которыми можно столкнуться при работе с Python.
Установка языка программирования
Установка расширений
Изолированное виртуальное пространство
Автозапуск через systemd
Решение возможных проблем
Установка Python
Мы рассмотрим два способа установки питона:
- Использование встроенного репозитория. Данный метод проще всего, но не позволит установить только те версии python, которые добавлены в репозиторий.
- Сборка из исходников. Это потребует дополнительных действий, однако позволит установить больше различных версий.
Пойдем по очереди.
а) Нативный репозиторий.
Установка выполняется командой:
dnf install python3
Будет установлена та версия, которая находится в репозитории Rocky Linux.
б) Сборка из исходников.
Устанавливаем пакеты, которые нам нужны для сборки:
dnf install gcc openssl-devel bzip2-devel libffi-devel zlib-devel wget make tar
Переходим ко списку версий Python и определяемся, какая версия нам нужна. Создадим переменную с указанием данной версии:
PY_VER=3.10.16
Перейдем во временный каталог:
cd /tmp
Скачиваем исходник для нужной версии питона:
curl -sLO https://www.python.org/ftp/python/${PY_VER}/Python-${PY_VER}.tgz
Распакуем архив и сразу удалим его:
tar -zxf Python-*.tgz && rm -f Python-*.tgz
Перейдем в распакованный каталог:
cd Python-*/
Выполним конфигурирование:
./configure --enable-optimizations
Выполним сборку:
make -j `nproc`
Можно устанавливать питон в систему:
make altinstall
После удаляем каталог с исходником:
cd ../ && rm -rf Python-*/
Установка завершена.
Установка расширений для Python
В python используется менеджер пакетов pip. С его помощью можно установить необходимые расширения, позволяющие использовать дополнительные функции.
Для удобства создадим переменную с установленной версией Python:
PY_VER=3.10
Обновляем менеджер pip:
python${PY_VER} -m pip install --upgrade pip
Теперь можно использовать его для установки расширения, например, requests:
python${PY_VER} -m pip install requests
Виртуальное окружение
Специальное окружение python позволяет запускать приложение в изолированном пространстве, где будут использоваться своя версия python и набор расширений. Это позволит обеспечить надежность работы нескольких приложений на одном сервере.
Для начала, нам нужно задать рабочую версию python, предположим, 3.12:
PY_VER=3.12
Затем установить пакет python-venv:
dnf install python${PY_VER}-venv
Теперь переходим в каталог с приложением с создадим окружение с использованием синтаксиса:
python<версия питона> -m venv <имя венва>
Например:
python${PY_VER} -m venv venv
Чтобы начать работу в созданном окружении, используем файл activate, который устанавливается в каталог bin венв-папки:
source venv/bin/activate
Приглашение командной строки должно замениться на:
(venv) ...
Можно работает в виртуальной среде, например, установить зависимости:
pip install -r requirements.txt
После окончания работ в виртуальной среде, чтобы выйти в shell, вводим:
deactivate
Автозапуск приложения через systemd
Для автоматического запуска приложения в качестве службы лучше всего использовать systemd.
Создаем файл:
vi /etc/systemd/system/my-app.service
[Unit]
Description=my-app service
Wants=network.target
After=syslog.target network-online.target
[Service]
Type=simple
WorkingDirectory=/opt/my-app
ExecStart=/opt/my-app/venv/bin/python ./app.py
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target
* в данном примере подразумевается, что наше приложение называется my-app и находится в каталоге /opt/my-app.
Когда мы не создали, а отредактировали файл systemd, его нужно перечитать командой:
systemctl daemon-reload
Можно разрешить и запустить приложение:
systemctl enable --now my-app
Посмотреть состояние службы можно командой:
systemctl status my-app
Решение проблем
fatal error: Python.h
Проблема может возникнуть при установке некоторых расширений python. В консоли мы видим ошибку:
fatal error: Python.h: No such file or directory
Причина: некоторые расширения устанавливаются из исходников. Для этого необходимо пакет python-dev, которого нет в системе.
Решение: устанавливаем пакет:
dnf install python3.12-dev
* где 3.12 — версия python, для которого необходим пакет dev.