Ответ
На production-серверах, особенно таких как Astra Linux, важно не ломать системный Python, от которого могут зависеть системные утилиты. Я решаю это с помощью pyenv или сборки из исходников с altinstall.
Рекомендуемый способ: использование pyenv.
-
Установите зависимости:
sudo apt update 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 -
Установите
pyenv:curl https://pyenv.run | bash # Добавьте строки в ~/.bashrc, как указано в выводе команды, и выполните `source ~/.bashrc`. -
Установите нужную версию Python и используйте ее:
pyenv install 3.9.15 # Устанавливаем конкретную версию pyenv global 3.9.15 # Делаем ее версией по умолчанию для пользователя python --version # Проверяем
Альтернатива: установка из исходников (если pyenv недоступен).
wget https://www.python.org/ftp/python/3.9.15/Python-3.9.15.tgz
tar -xzf Python-3.9.15.tgz
cd Python-3.9.15
./configure --enable-optimizations --prefix=/usr/local/python3.9
make -j$(nproc)
sudo make altinstall # Ключевая команда! Установит как python3.9, не перезаписывая системные ссылки.
/usr/local/python3.9/bin/python3.9 --version
В CI/CD-пайплайнах я автоматизирую эту установку через Ansible-роль, которая настраивает pyenv и нужные версии Python на всех целевых хостах.