opened image

Python diegimas Linux. Keletas būdų

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.