УВІЙТИ
    opened image

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

    У цій статті ми розповімо, як встановити Python на ваш Linux-дистрибутив.

     

    Ми розглянемо три варіанти установки Python:

    1. За допомогою пакетного менеджера — найпростіший і найпоширеніший метод установки Python. У більшості дистрибутивів Linux вже є пакети Python у їх репозиторіях.
    2. З вихідних кодів — цей спосіб надає більше гнучкості, але може виявитися складнішим.
    3. За допомогою пакетного менеджера для Python (pyenv) — найзручніший спосіб, що вимагає додаткових налаштувань.

     

    Перевірка версій Python

    Зазвичай на більшості дистрибутивів Linux 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 «Інструменти розробки»

    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 ви можете вибрати сервер для будь-яких потреб і будь-яких додатків.