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

Обновлено и опубликовано Опубликовано:

Используемые термины: Python, Rocky Linux.

Данная инструкция будет небольшой шпаргалкой по работе с Python на Rocky Linux (RPM based). Также мы рассмотрим некоторые служебные команды и разберем возможные ошибки, с которыми можно столкнуться при работе с Python.

Установка Python

Мы рассмотрим два способа установки питона:

  1. Использование встроенного репозитория. Данный метод проще всего, но не позволит установить только те версии python, которые добавлены в репозиторий.
  2. Сборка из исходников. Это потребует дополнительных действий, однако позволит установить больше различных версий.

Пойдем по очереди.

а) Нативный репозиторий.

Установка выполняется командой:

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.

# CentOS # DevOps # Rocky Linux
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет