PRISIJUNGTI
    opened image

    Python — tai daugiafunkcinė programavimo kalba, tinkanti įvairių užduočių sprendimui, nuo svetainių kūrimo iki duomenų analizės. Ji populiari tarp kūrėjų dėl savo paprastumo ir universalumo.

    Šiame straipsnyje mes papasakosime, kaip įdiegti Python jūsų Linux distribucijoje.

     

    Mes apsvarstysime tris Python diegimo variantus:

    1. Naudojant paketų tvarkyklę — tai paprasčiausias ir plačiausiai naudojamas Python diegimo metodas. Daugumoje Linux distribucijų jau yra Python paketai jų saugyklose.
    2. Iš šaltinio kodų — šis metodas suteikia daugiau lankstumo, tačiau gali būti sudėtingesnis.
    3. Naudojant Python paketų tvarkyklę (pyenv) — tai patogiausias būdas, reikalaujantis papildomų nustatymų.

     

    Python versijų tikrinimas

    Paprastai daugumoje Linux distribucijų Python 3 versija jau yra įdiegta kaip standartinė parinktis. Mes galime patikrinti jos versiją naudodami šią komandą, atidarydami terminalą.

    python3 --version

     

    Tačiau senesnėse distribucijų versijose gali būti įdiegta Python 2 versija, jai naudojame komandą 

    python --version

     

    Python diegimas per paketų tvarkyklę

     

    Prieš diegiant reikia atnaujinti sistemos paketus ir saugyklas, ir čia apsvarstysime skirtingus metodus skirtingoms versijoms

    Debian / Ubuntu

    sudo apt update && sudo apt upgrade -y


    RHEL (Fedora / Almalinux / RockyOS / CentOS)

     

    sudo yum update -y

     

    Ubuntu distribucijoms mums lengva išplėsti prieinamų versijų sąrašą, pridėjus deadsnakes saugyklą:

     

    sudo add-apt-repository ppa:deadsnakes/ppa


    Red Hat (Fedora / Almalinux / RockyOS / CentOS) pagrindu veikiančioms distribucijoms lengva pridėti EPEL (Extra Packages for Enterprise Linux) saugyklą:

    sudo yum install epel-release -y

    Tada turime patikrinti, kokios Python versijos yra prieinamos diegimui:

    Debian / Ubuntu

    sudo apt search python | grep ^python


    RHEL (Fedora / Almalinux / RockyOS / CentOS)

    sudo yum list available | grep ^python


     

    Kad apribotume reikiamą versiją, turime įvesti komandą pagal pavyzdį (ieškome, ar mums prieinama python 3.8 versija, nes 12 versija jau įdiegta)

     

    Debian / Ubuntu

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


    RHEL (Fedora / Almalinux / RockyOS / CentOS)

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

     

    Jei sąraše yra mums reikalinga versija, ją galima įdiegti naudojant komandą

     

    Debian / Ubuntu

    sudo apt install python3.8


    RHEL (Fedora / Almalinux / RockyOS / CentOS)

    sudo yum install python3.8 -y

     

    Čia svarbus momentas, ar reikia nurodyti mažesnę versiją per tašką (python3.10) ar be (python310), priklauso nuo to, kaip pavadintas versijos paketas. Tai galima sužinoti iš ankstesnių komandų, kurias naudojome, kad patikrintume prieinamas versijas diegimui, rezultato.

     

    Norint kreiptis į įdiegtą interpretuotoją, reikia nurodyti jo numerį ir versiją komandoje:

     

    python3.8 --version


     

    Python kompiliavimas iš šaltinio kodo

     

    Python versijos kompiliavimui iš šaltinio kodo reikia įdiegti papildomų priklausomybių. Atlikite diegimą šiom komandų:

     

    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 «Kūrimo įrankiai»

    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

     

    Patogumui tolesniam Python diegimui komandinėje aplinkoje, nustatykime versijos numerį kaip kintamąjį

     

    Patikrinti prieinamų Python versijų sąrašą galima oficialioje svetainėje https://www.python.org/downloads/source/

     

    Reikia atsisiųsti ir išpakuoti archyvą su šaltinio kodu, o po to pereiti į išpakuotą katalogą, o kad palengvintume užduotį, galime pasinaudoti Build, compile and install Python from source code paslauga 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

     

    Dabar nurodome konfigūraciją kompiliavimui ir pradedame kompiliavimą

     

    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

    Priklausomai nuo mūsų poreikių naudojant Python, galite pridėti šias parinktis prie ./configure komandos, kurią naudojome anksčiau. Dabar pateiksime pavyzdžius, ką galime pridėti:

    --prefix=/path/to/directory - Nurodo diegimo katalogą.

    --enable-optimizations - Įjungia optimizavimą Python.

    --enable-ipv6 - Įjungia IPv6 tinklų palaikymą.

    --with-lto - Įjungia Link-Time Optimization (LTO), kas pagerins našumą, tačiau gali padidinti kompiliavimo laiką.

     

    Norėdami sužinoti daugiau apie visas parinktis, konfigūraciją, reikia įvykdyti komandą

     

    ./configure --help

     

    Tada galime pridėti papildomus įrankius darbui

     

    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 šio kodo paleidimo mūsų kompiliavimas užtruks šiek tiek laiko, o rezultatas turėtų būti mūsų įdiegtos versijos katalogas


    Dabar svarbus žingsnis, būtent reikia patikrinti, ar Python buvo teisingai įdiegtas. Mūsų įdiegtai versijai 3.9.20 - tikriname šia komanda:

     

    python3.9 --version


    Jei viskas veikia teisingai, reikia ištrinti šaltinio kodų failus, iš kurių atlikome kompiliavimą, nes jie mums daugiau nereikalingi:

     

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

     

    Būna atvejų, kai kompiliavimas baigiasi klaidomis. Tokiu atveju reikia pakartoti diegimą, tačiau šį kartą be optimizavimo. Prieš tai reikia išvalyti laikinus failus, kurie buvo sukurti mūsų ankstesnio kompiliavimo proceso metu:

     

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


     

    Python diegimas per pyenv

     

    Jei aukščiau pateikti metodai mums netinka, rekomenduojame išbandyti pyenv, jis yra labai patogus, jei reikia dirbti su keliais projektais, kuriems reikia skirtingų interpretuotojų versijų. Šis versijų tvarkyklė leidžia lengvai perjungti tarp versijų ir izoliuoti projekto priklausomybes.

     

    Prieš diegiant pyenv, reikia įdiegti priklausomybes, reikalingas Python kompiliavimui, komandų, skirtų jų diegimui, mes jau žinome iš šio straipsnio aukščiau, tačiau reikia pridėti ir git paketą, nes pyenv atsisiųsime iš git saugyklos

     

    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 «Kūrimo įrankiai»

    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

     

    Tada atsisiųskite naujausią pyenv šaltinio kodą iš Github saugyklos ir įdiekite jį į kelią ~/.pyenv :

     

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


    Dabar reikia nustatyti aplinkos kintamąjį PYENV_ROOT, kad jis nurodytų kelią, kur įdiegėte pyenv, ir eksportuoti jį. Tada pridėkite $PYENV_ROOT/bin į PATH, kad galėtumėte paleisti pyenv komandinę eilutę kaip bet kurią kitą sistemos komandą. 

     

    Taip pat reikia įjungti shims ir automatinį užbaigimą, pridėjus pyenv init į komandinę eilutę, kad galėtumėte perjungti tarp Python versijų «skrydžio metu». Galite pridėti visus nustatymus naudodami šią komandą:

     

    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 to reikia pritaikyti pakeitimus:

     

    source ~/.bashrc

     

    Dabar jūsų bash vartotojo aplinkoje, iš kurios atlikote diegimą, turite galimybę naudoti, diegti ir keisti Python versijas.

     

    Šiame etape galite pereiti tiesiai prie norimos Python versijos diegimo. Patikrinti prieinamų diegimui versijų sąrašą galima, įvykdžius šią komandą:

     

    pyenv install -l


    Python versijas galima įdiegti pagal šį pavyzdį:

     

    pyenv install 3.12.2

     

     

    Tada tikriname, kokios versijos jau įdiegtos:

     

    pyenv versions


    Dabar turime galimybę diegti Python versijas kiekvienam projektui atskirai. Tam reikia pereiti į mūsų projekto katalogą:

     

    cd /path/to/project/

     

    Dabar komandinėje aplinkoje reikia įdiegti Python versiją, kurią anksčiau įdiegėme per komandą pyenv install :

     

    pyenv local 3.10.3

     

    Dabar reikia patikrinti, ar esant kataloge teisingai buvo įdiegta versija mūsų projektui, naudojant komandas pyenv version arba python -V.


    Išvada

    Mes apsvarstėme 3 skirtingus Python versijų diegimo būdus Linux. Patogiausias yra diegimo metodas per sisteminę paketų tvarkyklę, nes diegimas vyksta 2-3 komandomis, tačiau kai serveryje gali būti įvairių programų su skirtingomis versijomis - geriau pasirinkti diegimą per Pyenv. Šį metodą rekomenduoja ir Python bendruomenė, nes bet kurią versiją galima įdiegti viena komanda ir iš karto pradėti ją naudoti.

     

    Zomro galite pasirinkti serverį bet kokiems poreikiams ir bet kokioms programoms.