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


Используемые термины: Python, Ubuntu.
Данная инструкция будет небольшой шпаргалкой по установке Python на Linux DEB (Ubuntu / Debian). Также мы рассмотрим некоторые служебные команды и разберем возможные ошибки, с которыми можно столкнуться при работе с Python.
Установка языка программирования
Управление несколькими версиями на одном компьютере
Установка расширений
Изолированное виртуальное пространство
Автозапуск через systemd
Решение возможных проблем
Установка Python
Мы рассмотрим два способа установки питона на Linux Deb:
- Использование встроенного репозитория. Данный метод проще всего, но не позволит установить только те версии python, которые добавлены в репозиторий.
- Настройка дополнительного репозитория для установки пакетов определенной версии. Это потребует дополнительных действий, однако позволит установить больше различных версий пакета.
Пойдем по-очереди.
а) Нативный репозиторий.
Для того, чтобы посмотреть версии пакета Python, которые могут быть установлены, введем команды:
apt update
apt search --names-only '^python[.0-9]{3,4}$'
Если среди перечня версий есть нужная нам, выполняем установку командой:
apt install python3.11
* в данном примере будет установлен пакет python версии 3.11.
б) Дополнительный репозиторий.
Установим пакет:
apt install software-properties-common
* software-properties-common — утилита для управления репозиториями из командной строки.
Добавим персональный архив пакетов (PPA) deadsnakes:
add-apt-repository ppa:deadsnakes/ppa
Для удобства, создадим переменную с версией Python, которую мы хотим установить:
PY_VER=3.12
Можно установить пакет:
apt install python${PY_VER}
Несколько версий и версия по умолчанию
После установки можно посмотреть версию питона, который используется в системе:
python --version
При необходимости мы можем добавить установленную версию python в конфигурацию update-alternatives:
update-alternatives --install /usr/bin/python python /usr/bin/python${PY_VER} 0
* это позволит нам делать выбор, какую версию использовать по умолчанию.
Теперь, при необходимости и наличии нескольких версий python, мы можем менять предпочитаемую:
update-alternatives --config python
Если же мы увидим что-то на подобие:
There is only one alternative in link group python (providing /usr/bin/python): /usr/bin/python3.12
Nothing to configure.
... значить в нашей системе установлена только одна версия python.
Установка расширений для Python
В python используется менеджер пакетов pip. С его помощью можно установить необходимые расширения, позволяющие использовать дополнительные функции.
Для начала, установим последнюю версию pip:
curl -sS https://bootstrap.pypa.io/get-pip.py | python3
Теперь можно использовать его для установки расширения, например, django:
python3 -m pip install django
Виртуальное окружение
Специальное окружение python позволяет запускать приложение в изолированном пространстве, где будут использоваться своя версия python и набор расширений. Это позволит обеспечить надежность работы нескольких приложений на одном сервере.
Для начала, нам нужно задать рабочую версию python:
PY_VER=3.12
установить пакет python-venv:
apt 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, которого нет в системе.
Решение: устанавливаем пакет:
apt install python3.12-dev
* где 3.12 — версия python, для которого необходим пакет dev.