Системные инструменты в Ubuntu зависят от нативной версии Python. При попытке обновить или изменить системный Python через apt можно случайно удалить критически важные пакеты, что приведет к потере доступа к серверу.
Чтобы безопасно работать с разными версиями Python, используйте инструменты, которые не изменяют системную версию. Например, pyenv — инструмент для изолированной установки и управления множеством версий Python без модификации системной версии.
Установка pyenv
Шаг 1. Установка зависимостей
Перед установкой pyenv необходимо установить системные библиотеки и инструменты сборки. Воспользуйтесь одной из команд ниже.
Для Ubuntu/Debian:
# Обновляем информацию о пакетах и устанавливаем инструменты для сборки
sudo apt update
# Устанавливаем зависимости, необходимые для компиляции Python
sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev \
liblzma-dev python3-openssl git
Для CentOS/RHEL 8+:
# Включаем репозиторий EPEL для дополнительных пакетов
sudo dnf install epel-release
# Устанавливаем зависимости для сборки
sudo dnf install -y gcc zlib-devel bzip2 bzip2-devel readline-devel \
sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel \
git wget curl make
Шаг 2. Установка pyenv
Для автоматической установки воспользуйтесь командой:
curl https://pyenv.run | bash
Шаг 3. Настройка shell для pyenv
Добавьте в конфигурацию shell (~/.bashrc, ~/.zshrc или аналогичный) следующие строки в конце файла:
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
# Если планируете использовать виртуальные окружения:
eval "$(pyenv virtualenv-init -)"
Примените изменения:
exec "$SHELL"
Шаг 4. Проверка установки
Проверьте установку с помощью команды pyenv --version.
Если терминал возвращает номер версии — установка прошла успешно.
Использование pyenv
Чтобы увидеть доступные версии Python, введите команду pyenv install --list.
Для установки конкретной версии Python используйте команду pyenv install <версия>.
Увидеть установленные версии можно с помощью команды pyenv versions.
Чтобы назначить определенную версию Python глобально (для всей системы в рамках пользователя), воспользуйтесь командой pyenv global <версия>.
Обратите внимание
Рекомендуем менять глобальную версию только если вы уверены, что это не затронет системные утилиты.
Чтобы назначить версию Python только для конкретного проекта, перейдите в каталог проекта и создайте локальный файл конфигурации:
cd путь/к/проекту
pyenv local <версия>
Чтобы убедиться, что для проекта назначена локальная версия, выполните:
pyenv version
Работа с виртуальными средами через pyenv-virtualenv
Чтобы управлять виртуальными средами через pyenv, установите плагин pyenv-virtualenv.
Шаг 1. Установка плагина
Клонируйте плагин:
git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
После этого примените конфигурацию shell:
source ~/.bashrc
Шаг 2. Создание виртуальной среды
Чтобы создать виртуальную среду под конкретную версию Python, воспользуйтесь командой:
pyenv virtualenv <версия> <имя_окружения>
Или создайте среду в отдельной директории проекта:
mkdir ~/python_projects/project1
cd ~/python_projects/project1
pyenv virtualenv 3.11.5 venv_project1
Шаг 3. Просмотр виртуальных сред
Чтобы увидеть список всех доступных версий Python и виртуальных окружений:
pyenv versions
Список включает установленные интерпретаторы и окружения, отмеченные префиксом * при активном выборе.
Активация и деактивация виртуальной среды
Чтобы активировать виртуальную среду, используйте команду:
pyenv activate venv_project1
Если при первом запуске появится предупреждение pyenv-virtualenv: prompt changing will be removed from future release, добавьте в ~/.bashrc строку:
export PYENV_VIRTUALENV_DISABLE_PROMPT=1
Затем примените изменения:
source ~/.bashrc
Чтобы деактивировать активную виртуальную среду, используйте команду pyenv deactivate.
Полезные команды pyenv
Чтобы вывести список всех доступных команд pyenv, используйте:
pyenv commands
Чтобы обновить список доступных версий Python:
pyenv update
Чтобы удалить установленную версию:
pyenv uninstall <версия>
Рекомендации по безопасной работе
Не изменяйте системную версию Python (/usr/bin/python*).
Не используйте
update-alternativesдля Python — это нарушает работу системных утилит.Для каждого проекта используйте
pyenv localили отдельные виртуальные среды.