opened image

Установка Python на Linux. Несколько способов

Python — это многофункциональный язык программирования, который подходит для решения самых разных задач, от создания веб-сайтов до анализа данных. Он популярен среди разработчиков благодаря своей простоте и универсальности.

В этой статье мы расскажем, как установить Python на ваш Linux-дистрибутив.

 

Мы рассмотрим три варианта установки Python:

  1. С помощью пакетного менеджера — самый простой и распространенный метод установки Python. В большинстве дистрибутивов Linux уже есть пакеты Python в их репозиториях.
  2. Из исходных кодов — этот способ предоставляет больше гибкости, но может оказаться сложнее.
  3. С помощью пакетного менеджера для Python (pyenv) — самый удобный способ, требующий дополнительных настроек.

 

Проверка версий Python

Обычно на большинстве дистрибутивов Линукс Python 3 версии уже установлен, как стандартная опция. Мы можем проверить его версию при помощи следующей команды, открыв терминал.

python3 --version

 

Однако на устаревших версиях дистрибутивов может быть установлен Python 2-й версии, для него используем команду 

python --version

 

Установка Python через пакетный менеджер

 

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

Debian / Ubuntu

sudo apt update && sudo apt upgrade -y


RHEL (Fedora / Almalinux / RockyOS / CentOS)

 

sudo yum update -y

 

Для дистрибутивов Ubuntu нам легко расширить список доступных версий, добавив репозиторий deadsnakes:

 

sudo add-apt-repository ppa:deadsnakes/ppa


Для дистрибутивов на основе Red Hat (Fedora / Almalinux / RockyOS / CentOS) легко добавить репозиторий EPEL (Extra Packages for Enterprise Linux):

sudo yum install epel-release -y

Далее нам нужно проверить, какие версии Python доступны для установки:

Debian / Ubuntu

sudo apt search python | grep ^python


RHEL (Fedora / Almalinux / RockyOS / CentOS)

sudo yum list available | grep ^python


 

Что бы ограничиться нужной нам версией необходимо ввести команду по примеру (ищем доступна ли нам версия python 3.8, так как 12 версия у нас уже установлена)

 

Debian / Ubuntu

sudo apt-cache search python | grep -E ^python3?\.8


RHEL (Fedora / Almalinux / RockyOS / CentOS)

sudo yum list available | grep -E ^python3?\.8

 

Если в списке есть нужная нам версия, то установить ее можно с помощью команды

 

Debian / Ubuntu

sudo apt install python3.8


RHEL (Fedora / Almalinux / RockyOS / CentOS)

sudo yum install python3.8 -y

 

Тут важный момент, а именно нужно ли указывать минорную версию через точку (python3.10) или без (python310), зависит от того, как называется пакет версии. Это можно узнать из результата выполнения предыдущих команд, которую мы использовали для проверки доступный версий для установки.

 

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

 

python3.8 --version


 

Компиляция Python из исходного кода

 

Компиляция версии Python из исходного кода требуется установка дополнительных зависимостей. Выполняем установку следующими командами:

 

Debian / Ubuntu

sudo apt-get install -y make curl build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl

 

RHEL (Fedora / Almalinux / RockyOS / CentOS)

sudo yum -y install epel-release

sudo yum -y groupinstall «Инструменты разработки»

sudo yum -y install curl gcc make zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel tk-devel

 

Для удобства дальнейшей работы по установке Python в переменных командной оболочки, давайте зададим номер версии в виде переменной

 

Проверить список доступных версий Python можно на офф.сайте https://www.python.org/downloads/source/

 

Нужно скачать и распаковать архив с исходным кодом, а после нужно перейти в распакованную директорию, а для того, чтобы упростить нам задачу воспользуемся можем воспользоваться сервисом Build, compile and install Python from source code https://www.build-python-from-source.com/

 

 

sudo apt-get update

sudo apt-get upgrade

sudo apt-get 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 liblzma-dev tk-dev

 

cd /tmp/

wget https://www.python.org/ftp/python/3.9.20/Python-3.9.20.tgz

tar xzf Python-3.9.20.tgz

cd Python-3.9.20

 

Теперь указываем конфигурацию для сборки и запускаем компиляцию

 

sudo ./configure --prefix=/opt/python/3.9.20/ --enable-optimizations --with-lto --with-computed-gotos --with-system-ffi --enable-shared

sudo make -j "$(nproc)"

sudo ./python3.9 -m test -j "$(nproc)"

sudo make altinstall

sudo rm /tmp/Python-3.9.20.tgz

В зависимости от наших потребностей в использовании Python можете добавить следующие опции к команде ./configure, которую мы использовали выше. Сейчас приведем примеры того, что можем добавить:

--prefix=/path/to/directory - Указывает каталог установки.

--enable-optimizations - Включает оптимизацию для Python.

--enable-ipv6 - Включает поддержку сетей IPv6.

--with-lto - Включает Link-Time Optimization (LTO), что улучшит производительность, но может увеличить время компиляции.

 

Чтобы узнать больше обо всех опциях, конфигурации, нужно выполнить команду

 

./configure --help

 

Далее можем добавить дополнительные инструменты для работы

 

sudo /opt/python/3.9.20/bin/python3.9 -m pip install --upgrade pip setuptools wheel

 

sudo ln -s /opt/python/3.9.20/bin/python3.9        /opt/python/3.9.20/bin/python3

sudo ln -s /opt/python/3.9.20/bin/python3.9        /opt/python/3.9.20/bin/python

sudo ln -s /opt/python/3.9.20/bin/pip3.9           /opt/python/3.9.20/bin/pip3

sudo ln -s /opt/python/3.9.20/bin/pip3.9           /opt/python/3.9.20/bin/pip

sudo ln -s /opt/python/3.9.20/bin/pydoc3.9         /opt/python/3.9.20/bin/pydoc

sudo ln -s /opt/python/3.9.20/bin/idle3.9          /opt/python/3.9.20/bin/idle

sudo ln -s /opt/python/3.9.20/bin/python3.9-config      /opt/python/3.9.20/bin/python-config


 

После запуска этого кода у нас пройдет компиляция, которая займет некоторое время, а по результату мы должны будем оказаться в директории нашей установленной версии


Сейчас важный шаг, а именно необходимо проверить правильность установки Python. Для установленной нашей версии 3.9.20- проверяем следующей командой:

 

python3.9 --version


Если все работает корректно, то нужно удалить файлы исходного кода, из которых мы выполняли компиляцию, так как они нам больше не нужны:

 

rm -rf /tmp/Python-3.9.20 /tmp/Python-3.9.20.tar.gz

 

Бывают случаи, когда компиляция заканчивается с ошибками. Для этого нужно повторно выполнить установку, но на этот раз без оптимизации. Перед этим нужно выполнить очистку временных файлов, которые были созданы в процессе нашей прошлой компиляции:

 

sudo make clean; ./configure; sudo make -j «$(nproc)»; sudo make install


 

Установка Python через pyenv

 

Если способы выше нам не подходят, то рекомендуем попробовать pyenv, он крайне удобен, если необходимо работать над несколькими проектами, которые требуют разные версии интерпретатора. Этот менеджер версий позволяет легко переключаться между версиями и изолировать зависимости проекта.

 

Прежде чем установить pyenv, нужно установить зависимости, необходимые для компиляции Python, команды для их установки нам уже известны с этой статьи выше, но нужно добавить будет еще и пакет git, поскольку загружать pyenv будем из git-репозитория

 

Debian / Ubuntu

sudo apt install -y curl git-core gcc make zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libssl-dev build-essential libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev


RHEL (Fedora / Almalinux / RockyOS / CentOS)

sudo yum -y install epel-release

sudo yum -y groupinstall «Development Tools»

sudo yum -y install git curl gcc make zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel tk-devel

 

Далее загружаем последнюю ветку исходного кода pyenv из репозитория на Github и устанавливаем его в путь ~/.pyenv :

 

git clone https://github.com/pyenv/pyenv.git ~/.pyenv


Теперь нужно установить переменную окружения PYENV_ROOT, чтобы она указывала на путь, куда вы установили pyenv, и экспортировать его. Затем добавьте $PYENV_ROOT/bin в PATH, чтобы запустить утилиту командной строки pyenv как любую другую системную команду. 

 

Вам также нужно включить shims и автозавершение, добавив pyenv init в командную строку, чтобы иметь возможность переключаться между версиями Python «на лету». Вы можете добавить все конфигурации с помощью следующей команды:

 

echo -e "\n## pyenv configs\nexport PYENV_ROOT=\"\$HOME/.pyenv\"\nexport PATH=\"\$PYENV_ROOT/bin:\$PATH\"\n\nif command -v pyenv 1>/dev/null 2>&1; then\n  eval \"\$(pyenv init -)\"\nfi" >> ~/.bashrc

 

## pyenv configs

export PYENV_ROOT=«$HOME/.pyenv»

export PATH=«$PYENV_ROOT/bin:$PATH»

 

if command -v pyenv 1>/dev/null 2>&1; then

   eval «$(pyenv init -)»

fi


После этого нужно применить изменения:

 

source ~/.bashrc

 

Теперь на уровне оболочки bash пользователя, с которого выполняли установку, у вас есть возможность использовать, устанавливать и изменять версии Python.

 

На этом этапе можно перейти непосредственно к установке нужной вам версии Python. Проверить список доступных для установки версий можно, выполнив следующую команду:

 

pyenv install -l


Установить версии Python можно по следующему примеру:

 

pyenv install 3.12.2

 

 

Затем проверяем, какие версии уже установлены:

 

pyenv versions


Теперь у нас есть возможность устанавливать версии Python для каждого проекта отдельно. Для этого нужно перейти в директорию нашего проекта:

 

cd /path/to/project/

 

Теперь на уровне командной оболочки нужно установить версию Python, которую мы предварительно установили через команду pyenv install :

 

pyenv local 3.10.3

 

Теперь нужно проверить, находясь в директории, корректно ли была установлена версия для нашего проекта или нет, при помощи команд pyenv version или python -V.


Вывод

Мы рассмотрели 3 разных способа установки версий Python на Linux. Самым удобным является метод установки через системный пакетный менеджер, ведь установка проходит в 2-3 команды, однако когда на сервере могут размещаться различные приложения с различными версиями - лучше выбрать установку через Pyenv. Этот способ рекомендует и сообщество Python, так как любую версию можно установить одной командой и сразу же начать ее использовать.

 

В Zomro вы можете выбрать сервер для любых потребностей и любых приложений.