opened image

Instalacja Pythona na Linuxie. Kilka sposobów

Python — to wielofunkcyjny język programowania, który nadaje się do rozwiązywania różnych zadań, od tworzenia stron internetowych po analizę danych. Jest popularny wśród programistów dzięki swojej prostocie i uniwersalności.

W tym artykule opowiemy, jak zainstalować Pythona na swoim dystrybucji Linux.

 

Rozważymy trzy opcje instalacji Pythona:

  1. Za pomocą menedżera pakietów — najprostsza i najczęściej stosowana metoda instalacji Pythona. W większości dystrybucji Linux pakiety Pythona są już dostępne w ich repozytoriach.
  2. Z kodu źródłowego — ta metoda zapewnia większą elastyczność, ale może być bardziej skomplikowana.
  3. Za pomocą menedżera pakietów dla Pythona (pyenv) — najwygodniejszy sposób, wymagający dodatkowych ustawień.

 

Sprawdzanie wersji Pythona

Zazwyczaj w większości dystrybucji Linux Python 3 jest już zainstalowany jako opcja standardowa. Możemy sprawdzić jego wersję za pomocą następującego polecenia, otwierając terminal.

python3 --version

 

Jednak w przestarzałych wersjach dystrybucji może być zainstalowany Python 2, dla którego używamy polecenia 

python --version

 

Instalacja Pythona za pomocą menedżera pakietów

 

Przed instalacją należy zaktualizować pakiety systemowe i repozytoria, a tutaj rozważymy różne metody dla różnych wersji

Debian / Ubuntu

sudo apt update && sudo apt upgrade -y


RHEL (Fedora / Almalinux / RockyOS / CentOS)

 

sudo yum update -y

 

Dla dystrybucji Ubuntu łatwo jest rozszerzyć listę dostępnych wersji, dodając repozytorium deadsnakes:

 

sudo add-apt-repository ppa:deadsnakes/ppa


Dla dystrybucji opartych na Red Hat (Fedora / Almalinux / RockyOS / CentOS) łatwo jest dodać repozytorium EPEL (Extra Packages for Enterprise Linux):

sudo yum install epel-release -y

Następnie musimy sprawdzić, jakie wersje Pythona są dostępne do instalacji:

Debian / Ubuntu

sudo apt search python | grep ^python


RHEL (Fedora / Almalinux / RockyOS / CentOS)

sudo yum list available | grep ^python


 

Aby ograniczyć się do potrzebnej wersji, należy wpisać polecenie według przykładu (sprawdzamy, czy dostępna jest wersja python 3.8, ponieważ wersja 12 jest już zainstalowana)

 

Debian / Ubuntu

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


RHEL (Fedora / Almalinux / RockyOS / CentOS)

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

 

Jeśli na liście znajduje się potrzebna wersja, można ją zainstalować za pomocą polecenia

 

Debian / Ubuntu

sudo apt install python3.8


RHEL (Fedora / Almalinux / RockyOS / CentOS)

sudo yum install python3.8 -y

 

Ważny moment, a mianowicie, czy należy podać wersję mniejszą przez kropkę (python3.10) czy bez (python310), zależy od tego, jak nazywa się pakiet wersji. Można to sprawdzić w wyniku wykonania poprzednich poleceń, które użyliśmy do sprawdzenia dostępnych wersji do instalacji.

 

Aby odwołać się do zainstalowanej wersji interpretera, należy podać jej numer i wersję w poleceniu:

 

python3.8 --version


 

Kompilacja Pythona z kodu źródłowego

 

Kompilacja wersji Pythona z kodu źródłowego wymaga zainstalowania dodatkowych zależności. Wykonujemy instalację następującymi poleceniami:

 

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 «Narzędzia deweloperskie»

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

 

Dla wygody dalszej pracy nad instalacją Pythona w zmiennych powłoki, ustawmy numer wersji jako zmienną

 

Sprawdzić listę dostępnych wersji Pythona można na oficjalnej stronie https://www.python.org/downloads/source/

 

Należy pobrać i rozpakować archiwum z kodem źródłowym, a następnie przejść do rozpakowanego katalogu, a aby uprościć sobie zadanie, możemy skorzystać z serwisu 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

 

Teraz podajemy konfigurację do budowy i uruchamiamy kompilację

 

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

W zależności od naszych potrzeb w korzystaniu z Pythona, możemy dodać następujące opcje do polecenia ./configure, które użyliśmy powyżej. Teraz podamy przykłady tego, co możemy dodać:

--prefix=/path/to/directory - Wskazuje katalog instalacji.

--enable-optimizations - Włącza optymalizację dla Pythona.

--enable-ipv6 - Włącza wsparcie dla sieci IPv6.

--with-lto - Włącza Link-Time Optimization (LTO), co poprawi wydajność, ale może zwiększyć czas kompilacji.

 

Aby dowiedzieć się więcej o wszystkich opcjach, konfiguracji, należy wykonać polecenie

 

./configure --help

 

Następnie możemy dodać dodatkowe narzędzia do pracy

 

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


 

Po uruchomieniu tego kodu nastąpi kompilacja, która zajmie trochę czasu, a w rezultacie powinniśmy znaleźć się w katalogu naszej zainstalowanej wersji


Teraz ważny krok, a mianowicie należy sprawdzić poprawność instalacji Pythona. Dla naszej zainstalowanej wersji 3.9.20 - sprawdzamy następującym poleceniem:

 

python3.9 --version


Jeśli wszystko działa poprawnie, należy usunąć pliki kodu źródłowego, z których wykonywaliśmy kompilację, ponieważ nie są już potrzebne:

 

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

 

Zdarza się, że kompilacja kończy się błędami. W takim przypadku należy ponownie wykonać instalację, ale tym razem bez optymalizacji. Przed tym należy wykonać czyszczenie plików tymczasowych, które zostały utworzone w trakcie naszej poprzedniej kompilacji:

 

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


 

Instalacja Pythona za pomocą pyenv

 

Jeśli powyższe metody nam nie odpowiadają, zalecamy spróbować pyenv, jest on niezwykle wygodny, jeśli trzeba pracować nad kilkoma projektami, które wymagają różnych wersji interpretera. Ten menedżer wersji pozwala łatwo przełączać się między wersjami i izolować zależności projektu.

 

Zanim zainstalujemy pyenv, musimy zainstalować zależności potrzebne do kompilacji Pythona, polecenia do ich instalacji są nam już znane z tego artykułu powyżej, ale należy dodać również pakiet git, ponieważ będziemy pobierać pyenv z repozytorium 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 «Narzędzia deweloperskie»

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

 

Następnie pobieramy ostatnią gałąź kodu źródłowego pyenv z repozytorium na Github i instalujemy go w ścieżce ~/.pyenv :

 

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


Teraz należy ustawić zmienną środowiskową PYENV_ROOT, aby wskazywała na ścieżkę, w której zainstalowano pyenv, i wyeksportować ją. Następnie dodaj $PYENV_ROOT/bin do PATH, aby uruchomić narzędzie wiersza poleceń pyenv jak każdą inną systemową komendę. 

 

Musisz również włączyć shims i autouzupełnianie, dodając pyenv init do wiersza poleceń, aby móc przełączać się między wersjami Pythona «na żywo». Możesz dodać wszystkie konfiguracje za pomocą następującego polecenia:

 

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


Po tym należy zastosować zmiany:

 

source ~/.bashrc

 

Teraz na poziomie powłoki bash użytkownika, z którego wykonano instalację, masz możliwość korzystania, instalowania i zmieniania wersji Pythona.

 

Na tym etapie można przejść bezpośrednio do instalacji potrzebnej wersji Pythona. Sprawdzić listę dostępnych wersji do instalacji można, wykonując następujące polecenie:

 

pyenv install -l


Można zainstalować wersje Pythona według następującego przykładu:

 

pyenv install 3.12.2

 

 

Następnie sprawdzamy, jakie wersje są już zainstalowane:

 

pyenv versions


Teraz mamy możliwość instalowania wersji Pythona dla każdego projektu osobno. W tym celu należy przejść do katalogu naszego projektu:

 

cd /path/to/project/

 

Teraz na poziomie powłoki poleceń należy zainstalować wersję Pythona, którą wcześniej zainstalowaliśmy za pomocą polecenia pyenv install :

 

pyenv local 3.10.3

 

Teraz należy sprawdzić, będąc w katalogu, czy wersja dla naszego projektu została poprawnie zainstalowana, za pomocą poleceń pyenv version lub python -V.


Podsumowanie

Rozważaliśmy 3 różne sposoby instalacji wersji Pythona na Linux. Najwygodniejszą metodą jest instalacja za pomocą menedżera pakietów systemowych, ponieważ instalacja odbywa się w 2-3 poleceniach, jednak gdy na serwerze mogą znajdować się różne aplikacje z różnymi wersjami - lepiej wybrać instalację za pomocą Pyenv. Ta metoda jest również zalecana przez społeczność Pythona, ponieważ każdą wersję można zainstalować jednym poleceniem i od razu zacząć jej używać.

 

W Zomro możesz wybrać serwer do wszelkich potrzeb i aplikacji.