opened image

Установка Python 3.14 на Ubuntu 24.04

Иногда Python 3.14 нужен не «когда‑нибудь потом», а прямо сейчас: разработчики уже обновили зависимости, CI ругается, а на серверах всё ещё живёт стандартный Python из Ubuntu 24.04.

 

Собирать Python из исходников на каждом сервере? Долго, неудобно и плохо масштабируется. В продовой инфраструктуре гораздо удобнее подход:

Один раз подключили репозиторий — дальше ставим и обновляем Python как обычный пакет через apt.

 

В этой статье разберём установку Python 3.14 на Ubuntu 24.04 через репозиторий (PPA) без ручной сборки, с учётом подводных камней и потребностей сисадмина/девопса.

 

 

 

Общая идея: Python как обычный пакет

 

Почему репозиторий — это удобно для админа:

  • масштабируемость: те же команды apt install можно использовать в Ansible, bash‑скриптах, cloud‑init;

  • обновления: исправления безопасности и минорные версии прилетают через привычный apt upgrade;

  • прозрачность: видно, откуда пришёл пакет, его версию, зависимости;

  • возможность отката: можно зафиксировать версию или удалить пакет стандартными средствами.

 

При этом системный Python в Ubuntu 24.04 мы не трогаем — он нужен самой системе. Python 3.14 будет жить рядом, как отдельная версия.

 

 

Подготовка системы

 

Начнём с базового обслуживания:

sudo apt update && sudo apt upgrade -y

 

Это приведёт систему в актуальное состояние и уменьшит вероятность конфликтов при установке новых пакетов.

 

Поставим утилиты для работы с дополнительными репозиториями:

sudo apt install -y software-properties-common

 

Заодно можно посмотреть, что сейчас стоит как системный Python:

python3 --version

 

С большой вероятностью это будет версия из стандартного репозитория Ubuntu (например, 3.12). Это ок, мы её не меняем.

 

 

Подключаем репозиторий с Python 3.14

 

Для установки свежих версий Python на Ubuntu традиционно используют отдельный репозиторий (PPA), который поставляет пакеты вида python3.13, python3.14 и т.д.

 

Подключим этот репозиторий и обновим список пакетов:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update

💡 Рекомендация для продакшна: использование стороннего PPA лучше согласовать с ответственными за безопасность. Зато взамен вы получаете удобный, предсказуемый способ обновлять Python.

 

После этого в системе появятся дополнительные версии Python, доступные через apt.

 

 

Устанавливаем Python 3.14

 

Теперь можно поставить нужную версию из репозитория одной командой:

sudo apt install -y python3.14 python3.14-venv python3.14-dev
  • python3.14 — сам интерпретатор;

  • python3.14-venv — модуль для создания виртуальных окружений;

  • python3.14-dev — заголовочные файлы и зависимости для сборки модулей с C‑расширениями.

 

Проверим, что всё встало:

python3.14 --version

 

Если видим Python 3.14.x — всё хорошо.

 

Заодно можно посмотреть, какие версии Python есть в системе:

ls /usr/bin/python3.*

 

Чаще всего там будут и системный python3.12, и наш свежий python3.14.

Важно: мы не делаем симлинки вида sudo ln -sf /usr/bin/python3.14 /usr/bin/python3. Это может сломать системные утилиты и apt. Для Python 3.14 всегда используем явную команду python3.14.

 

 

Настраиваем pip для Python 3.14

 

На серверах лучше чётко разделять pip для разных версий Python. Надёжный способ — использовать модуль ensurepip, который встроен в сам Python.

 

Установка pip через ensurepip

 

Запускаем команду:

python3.14 -m ensurepip --upgrade

 

После этого проверяем:

python3.14 -m pip --version

 

Если версия отобразилась без ошибок, можно пользоваться.

Почему так, а не просто pip? Потому что команда pip может быть привязана к другой версии Python. Конструкция python3.14 -m pip всегда однозначно привязана к нужному интерпретатору.

 

Небольшой алиас для удобства

 

Для интерактивной работы можно добавить себе в ~/.bashrc или ~/.zshrc:

alias pip314='python3.14 -m pip'

 

Тогда установка пакетов будет выглядеть так:

pip314 install requests

 

На серверах и в скриптах всё же лучше писать полную форму python3.14 -m pip — так меньше поводов для путаницы.

 

 

Виртуальные окружения на базе Python 3.14

 

Дальше — важнейшая часть: изоляция зависимостей проектов.

 

Создадим каталог проекта:

mkdir -p ~/projects/api314
cd ~/projects/api314

 

Создаём виртуальное окружение с нужной версией Python:

python3.14 -m venv venv

 

Активируем его:

source venv/bin/activate

 

Проверяем, что внутри окружения используется именно Python 3.14:

python --version

 

Должно быть Python 3.14.x.

 

Теперь устанавливаем зависимости, но уже внутри окружения:

pip install fastapi uvicorn[standard]

 

Фиксируем их список в requirements.txt:

pip freeze > requirements.txt

Подводный камень: если забыть активировать venv и запустить просто pip install, пакеты могут установиться глобально для другой версии Python. Это ведёт к хаосу, особенно на серверах с несколькими проектами.

 

Чтобы выйти из виртуального окружения, используем:

deactivate

 

 

Репозитории + автоматизация: как раскатать Python 3.14 на парк серверов

 

Главное преимущество подхода через репозиторий — простая автоматизация.

 

Пример простого bash‑скрипта

 

Можно сделать небольшой скрипт, который вы будете запускать на новых серверах:

#!/usr/bin/env bash
set -e

sudo apt update
sudo apt install -y software-properties-common

sudo add-apt-repository -y ppa:deadsnakes/ppa
sudo apt update

sudo apt install -y python3.14 python3.14-venv python3.14-dev
python3.14 -m ensurepip --upgrade

echo "Python 3.14 installed: $(python3.14 --version)"

 

Такой скрипт можно использовать вручную или встроить в cloud-init, Ansible, Terraform‑provisioner и т.п.

 

Пример Ansible‑задачи (общая идея)

 

Логика через Ansible будет примерно такой:

  • задача на добавление PPA;

  • задача на установку python3.14 и сопутствующих пакетов;

  • задача на запуск python3.14 -m ensurepip --upgrade.

 

В итоге вы получаете одинаковую версию Python на всех серверах и можете уверенно запускать один и тот же код.

 

 

Фиксация версии и обновления

 

Иногда на продакшн‑серверах хочется зафиксировать версию Python 3.14 и не получать неожиданных обновлений.

 

Есть два типичных подхода:

 

Заморозить пакет через apt-mark

sudo apt-mark hold python3.14

 

Теперь apt upgrade не будет обновлять этот пакет.

 

Чтобы снова разрешить обновления:

sudo apt-mark unhold python3.14

 

Управление через репозиторий

 

В более продвинутых сценариях можно:

  • поднять свой зеркальный репозиторий;

  • ограничить, какие версии пакета в нём доступны.

Но это уже история про внутренние репозитории и DevOps‑практики.

 

 

Итоги

 

Мы установили Python 3.14 на Ubuntu 24.04 через репозиторий, без сборки из исходников, и при этом:

  • не тронули системный Python, от которого зависит сама Ubuntu;

  • получили возможность ставить и обновлять Python стандартным apt install/upgrade;

  • настроили pip именно под Python 3.14;

  • организовали изолированные виртуальные окружения для проектов;

  • обсудили, как масштабировать этот подход на парк серверов;

 

Такой способ хорошо вписывается в жизнь занятого администратора: один раз настроил репозиторий и дальше Python 3.14 становится таким же «обычным» пакетом инфраструктуры, как nginx или openssh-server.