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:
- Naudojant paketų tvarkyklę — tai paprasčiausias ir plačiausiai naudojamas Python diegimo metodas. Daugumoje Linux distribucijų jau yra Python paketai jų saugyklose.
- Iš šaltinio kodų — šis metodas suteikia daugiau lankstumo, tačiau gali būti sudėtingesnis.
- 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.