Установка и использование 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.