2026-09-18
Установка и использование Python на Ubuntu: версии, pip, venv, systemd

Установка и использование Python на Ubuntu: версии, pip, venv, systemd

Небольшая шпаргалка по установке Python на Ubuntu/Debian, работе с версиями, виртуальными окружениями, автозапуском приложений и типовыми ошибками.


Установка Python

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

apt update
apt search --names-only '^python[.0-9]{3,4}$'
apt install python3.12

б) Дополнительный репозиторий (deadsnakes):

apt install software-properties-common
add-apt-repository ppa:deadsnakes/ppa
PY_VER=3.12
apt install python${PY_VER}

PPA deadsnakes даёт доступ к свежим и старым версиям Python, которых нет в репозитории Ubuntu.


Несколько версий и версия по умолчанию

python --version

Добавляем версию в альтернативы:

update-alternatives --install /usr/bin/python python /usr/bin/python${PY_VER} 0

Переключение:

update-alternatives --config python

Если установлена только одна версия, увидим:

There is only one alternative in link group python (providing /usr/bin/python): /usr/bin/python3.12
Nothing to configure.

Установка расширений

Менеджер пакетов — pip. Устанавливаем актуальную версию:

curl -sS https://bootstrap.pypa.io/get-pip.py | python3
python3 -m pip install django

На современных Ubuntu предпочтительнее apt install python3-pip — системный pip работает с внешне управляемой средой (PEP 668).


Виртуальное окружение

Изолированное окружение даёт свою версию Python и набор пакетов — надёжно для нескольких приложений на сервере.

PY_VER=3.12
apt install python${PY_VER}-venv

В каталоге приложения:

python${PY_VER} -m venv venv

Синтаксис: python -m venv <каталог>.

Активация:

source venv/bin/activate

Приглашение сменится на (venv) ....

pip install -r requirements.txt
deactivate

Автозапуск приложения через 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, запуск из виртуального окружения.

systemctl daemon-reload
systemctl enable --now my-app
systemctl status my-app

Решение проблем

fatal error: Python.h

fatal error: Python.h: No such file or directory

Причина: часть расширений собирается из исходников, а пакет с заголовками (python-dev) не установлен.

Решение:

apt install python3.12-dev

где 3.12 — версия Python, для которого нужен dev-пакет.


Тонкости и подводные камни

  • PEP 668 (externally-managed-environment) — в Ubuntu 23.04+ системный pip install без --break-system-packages заблокирован; используйте venv или pipx.
  • deadsnakes — сторонний PPA; для продакшена оценивайте риски и фиксируйте версии.
  • update-alternatives — переключает только CLI; сервисы, завязанные на конкретный путь Python, не затрагиваются.
  • python3-venv — обязателен для python -m venv; без него модуль venv недоступен.
  • WorkingDirectory в systemd — задавайте, иначе относительные пути в приложении не найдут файлы.
  • Restart=on-failure — автоматический перезапуск упавшего приложения.
  • KillMode=process — корректная остановка дочерних процессов.
  • Версии Python — фиксируйте минорную версию в зависимостях; 3.13/3.14 уже актуальны.

Шпаргалка

# установка
apt install python3.12 python3-pip
add-apt-repository ppa:deadsnakes/ppa && apt install python3.13

# версия по умолчанию
update-alternatives --install /usr/bin/python python /usr/bin/python3.12 0
update-alternatives --config python

# venv
apt install python3.12-venv
python3.12 -m venv venv && source venv/bin/activate
pip install -r requirements.txt

# systemd
systemctl enable --now my-app

Проверено на: Ubuntu 22.04/24.04/26.04 + Python 3.10–3.14.
Дата: Сентябрь 2026.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *