ZALOGUJ
    opened image

    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.