opened image

Встановлення Python на Linux. Кілька способів

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