Python нужен в двух ипостасях: системный интерпретатор для утилит ОС и «проектный» Python для ваших приложений. Системный трогать не рекомендуется. Для проектов ставьте нужные версии рядом и работайте через виртуальные окружения.
Наш план
- Поставить системные пакеты python3, pip и venv.
- Для нескольких версий добавить репозиторий с мульти-PHP… стоп, с мульти-Python пакетами и установить python3.11/3.12 бок-о-бок.
- Либо установить любую версию через pyenv без вмешательства в систему.
- Всегда использовать виртуальные окружения venv и не менять системный python3 по update-alternatives.
Базовая установка из репозиториев
Этот вариант нужен почти на любом сервере: он дает системный python3, pip и venv, на которых дальше можно жить.
Ubuntu 24.04
sudo apt updatesudo apt install -y python3 python3-pip python3-venv python3-dev build-essentialpython3 -Vpip3 --version
Debian 12
sudo apt updatesudo apt install -y python3 python3-pip python3-venv python3-dev build-essentialpython3 -Vpip3 --version
Создание виртуального окружения для проекта
python3 -m venv /opt/venvs/appsource /opt/venvs/app/bin/activatepython -Vpip install --upgrade pip setuptools wheeldeactivate
Почему так
- 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 updatesudo apt install -y software-properties-common ca-certificates lsb-release apt-transport-httpssudo add-apt-repository -y ppa:deadsnakes/ppasudo apt update
# Примеры установки дополнительных ветокsudo apt install -y python3.11 python3.11-venv python3.11-devsudo 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/nullsudo apt updatesudo apt -t bookworm-backports install -y python3.12 python3.12-venv python3.12-dev
Создание окружений под конкретные версии
python3.11 -m venv /opt/venvs/app311python3.12 -m venv /opt/venvs/app312
source /opt/venvs/app312/bin/activatepython -Vpip install --upgrade pip setuptools wheeldeactivate
Важно
- Не меняйте системный интерпретатор ссылками update-alternatives на python3. Это может сломать утилиты ОС. Просто используйте явные команды python3.11 или python3.12 и shebang вида #!/usr/bin/env python3.12.
Независимая установка через pyenv (любые версии, без затрагивания системы)
pyenv ставит Python в ваш $HOME и не трогает системные пакеты. Удобно для разработчиков, CI, экспериментов и быстрого переключения между версиями.
Пакеты для сборки
sudo apt updatesudo 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"' >> ~/.bashrcecho 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrcecho 'eval "$(pyenv init -)"' >> ~/.bashrcexec $SHELL
Установка конкретных версий и переключение
pyenv install 3.12.0pyenv install 3.11.9pyenv global 3.12.0python -V
Виртуальные окружения с pyenv-virtualenv (опционально)
pyenv exec pip install --upgrade pip setuptools wheelpyenv virtualenv 3.12.0 app-312pyenv activate app-312python -Vpip install requestspyenv deactivate
Плюсы
- Любые версии, не мешают системе.
- Быстрое переключение между версиями и окружениями.
pipx для «глобальных» CLI-инструментов
Чтобы не засорять системный pip, ставьте консольные утилиты через pipx. Это изоляция уровня «одна утилита = одно окружение».
Установка
sudo apt install -y pipxpipx ensurepathexec $SHELL
Пример
pipx install poetrypoetry --version
Проверка работоспособности
Проверка интерпретаторов
python3 -Vpython3.11 -V || truepython3.12 -V || true
Мини-сценарий в окружении
python3 -m venv /opt/venvs/checksource /opt/venvs/check/bin/activatepython - <<'PY'import ssl, sysprint("OK", sys.version)PYdeactivate
Частые проблемы и решения
- Команда 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, только явные команды и изоляция окружений.