Python нужен в двух ипостасях: системный интерпретатор для утилит ОС и «проектный» Python для ваших приложений. Системный трогать не рекомендуется. Для проектов ставьте нужные версии рядом и работайте через виртуальные окружения.
Наш план
- Поставить системные пакеты python3, pip и venv.
- Для нескольких версий добавить репозиторий с мульти-PHP… стоп, с мульти-Python пакетами и установить python3.11/3.12 бок-о-бок.
- Либо установить любую версию через pyenv без вмешательства в систему.
- Всегда использовать виртуальные окружения venv и не менять системный python3 по update-alternatives.
Базовая установка из репозиториев
Этот вариант нужен почти на любом сервере: он дает системный python3, pip и venv, на которых дальше можно жить.
Ubuntu 24.04
sudo apt update
sudo apt install -y python3 python3-pip python3-venv python3-dev build-essential
python3 -V
pip3 --version
Debian 12
sudo apt update
sudo apt install -y python3 python3-pip python3-venv python3-dev build-essential
python3 -V
pip3 --version
Создание виртуального окружения для проекта
python3 -m venv /opt/venvs/app
source /opt/venvs/app/bin/activate
python -V
pip install --upgrade pip setuptools wheel
deactivate
Почему так
- python3-venv включает модуль venv для изоляции пакетов.
- python3-dev и build-essential нужны для сборки многих зависимостей с C-расширениями.
Несколько версий Python бок-о-бок из APT
Цель: иметь, например, 3.11 и 3.12 одновременно. Системный python3 не трогаем, в проектах вызываем нужную версию напрямую: python3.11 или python3.12.
Ubuntu 24.04: добавляем официальный PPA deadsnakes и ставим версии
sudo apt update
sudo apt install -y software-properties-common ca-certificates lsb-release apt-transport-https
sudo add-apt-repository -y ppa:deadsnakes/ppa
sudo apt update
# Примеры установки дополнительных ветокsudo apt install -y python3.11 python3.11-venv python3.11-dev
sudo apt install -y python3.12 python3.12-venv python3.12-dev
Debian 12: используем backports для более новых версий
echo 'deb http://deb.debian.org/debian bookworm-backports main' | sudo tee /etc/apt/sources.list.d/backports.list >/dev/null
sudo apt update
sudo apt -t bookworm-backports install -y python3.12 python3.12-venv python3.12-dev
Создание окружений под конкретные версии
python3.11 -m venv /opt/venvs/app311
python3.12 -m venv /opt/venvs/app312
source /opt/venvs/app312/bin/activate
python -V
pip install --upgrade pip setuptools wheel
deactivate
Важно
- Не меняйте системный интерпретатор ссылками update-alternatives на python3. Это может сломать утилиты ОС. Просто используйте явные команды python3.11 или python3.12 и shebang вида #!/usr/bin/env python3.12.
Независимая установка через pyenv (любые версии, без затрагивания системы)
pyenv ставит Python в ваш $HOME и не трогает системные пакеты. Удобно для разработчиков, CI, экспериментов и быстрого переключения между версиями.
Пакеты для сборки
sudo apt update
sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev curl git libncursesw5-dev xz-utils tk-dev \
libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
Установка pyenv
curl https://pyenv.run | bash
Подключение в оболочке bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
exec $SHELL
Установка конкретных версий и переключение
pyenv install 3.12.0
pyenv install 3.11.9
pyenv global 3.12.0
python -V
Виртуальные окружения с pyenv-virtualenv (опционально)
pyenv exec pip install --upgrade pip setuptools wheel
pyenv virtualenv 3.12.0 app-312
pyenv activate app-312
python -V
pip install requests
pyenv deactivate
Плюсы
- Любые версии, не мешают системе.
- Быстрое переключение между версиями и окружениями.
pipx для «глобальных» CLI-инструментов
Чтобы не засорять системный pip, ставьте консольные утилиты через pipx. Это изоляция уровня «одна утилита = одно окружение».
Установка
sudo apt install -y pipx
pipx ensurepath
exec $SHELL
Пример
pipx install poetry
poetry --version
Проверка работоспособности
Проверка интерпретаторов
python3 -V
python3.11 -V || true
python3.12 -V || true
Мини-сценарий в окружении
python3 -m venv /opt/venvs/check
source /opt/venvs/check/bin/activate
python - <<'PY'
import ssl, sys
print("OK", sys.version)
PY
deactivate
Частые проблемы и решения
- Команда python3.12 не находится
- На Ubuntu добавьте PPA deadsnakes и установите пакет python3.12 с venv/dev.
- На Debian 12 установите из bookworm-backports, как показано выше.
- Либо используйте pyenv и pyenv install 3.12.0
.
- ModuleNotFoundError: No module named venv
- Установите пакет python3-venv или python3.12-venv под нужную версию.
- Ошибка SSL при сборке из исходников
- Проверьте наличие libssl-dev и zlib1g-dev перед установкой через pyenv. Затем переустановите версию: pyenv uninstall 3.12.0 && pyenv install 3.12.0
.
- Сломались системные утилиты после «переключения python3»
- Верните системный python3 и не используйте update-alternatives для него. Вызывайте нужные версии явно или через pyenv.
- Нет прав на каталог /opt/venvs
- Создайте его с нужными правами: sudo install -d -m 0755 /opt/venvs
и запускайте venv под тем пользователем, кто будет работать с проектом.
В итоге мы получаем:
- База: поставили python3, pip и venv штатно, используем окружения.
- Параллельные версии: на Ubuntu через PPA deadsnakes, на Debian 12 через backports.
- Полная свобода версий без риска для системы: pyenv.
- Никаких смен системного python3, только явные команды и изоляция окружений.