ВОЙТИ
    opened image

    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 вы можете выбрать сервер для любых потребностей и любых приложений.