Pyenv - Namestite več različic Pythona za določen projekt


Upravljanje več različic Pythona v sistemu Linux ni lahka naloga, zlasti za začetnike. Včasih se celo poslabša, če želite na istem strežniku razviti in zagnati več projektov z različnimi različicami Pythona. Vendar pa to ne bi smelo veljati, če uporabljate pyenv.

Pyenv je preprosto, zmogljivo in medplatformsko orodje za upravljanje več različic Pythona v sistemih Linux, ki se uporablja za.

  • Preklop globalne različice Pythona na uporabnika.
  • nastavitev lokalne različice Pythona za vsak projekt.
  • Upravljanje virtualnih okolij, ki jih je ustvarila anaconda ali virtualenv.
  • Preglasitev različice Pythona s spremenljivko okolja.
  • Iskanje ukazov iz več različic Pythona in drugih.

Običajno se za izvajanje vseh aplikacij uporablja ena privzeta različica Pythona, razen če izrecno določite različico, ki jo želite uporabiti v aplikaciji. Toda pyenv izvaja preprost koncept uporabe podložk (lahkih izvedljivih datotek) za prenos vašega ukaza na pravilno različico Pythona, ki jo želite uporabiti, če imate nameščenih več različic.

Te podložke vstavi pyenv v imenike pred potjo PATH. Torej, ko zaženete ukaz Python, ga prestreže ustrezna podloga in posreduje pyenv, ki nato vzpostavi različico Python, ki jo je določila vaša aplikacija, in vaše ukaze posreduje ustrezni namestitvi Pythona. To je pregled delovanja pyenv.

V tem članku bomo pokazali, kako namestiti najnovejšo različico pyenv v Linux. Prikazali bomo tudi prve tri zgoraj navedene primere uporabe.

Kako namestiti Pyenv v Linux

1. Najprej namestite vse potrebne pakete za namestitev različnih različic Pythona iz virov z uporabo naslednjega ukaza v vaši distribuciji Linuxa.

------------ On Debian/Ubuntu/Linux Mint ------------ 
$ sudo apt install curl git-core gcc make zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libssl-dev

------------ On CentOS/RHEL ------------
# yum -y install epel-release
# yum install git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel

------------ On Fedora 22+ ------------
# yum install git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel

2. Nato vzemite najnovejše izvorno drevo pyenv iz skladišča Github in ga z naslednjim ukazom namestite na pot $HOME/.pyenv .

$ git clone https://github.com/pyenv/pyenv.git $HOME/.pyenv

3. Zdaj morate nastaviti spremenljivko okolja PYENV_ROOT, da kaže na pot, kamor ste namestili pyenv, in jo izvozite. Nato v svoj PATH dodajte $PYENV_ROOT/bin, da zaženete pripomoček za ukazno vrstico pyenv, tako kot vse druge sistemske ukaze.

Omogočiti morate tudi podložke in samodejno dokončanje, tako da v lupino dodate začetnico pyenv. Vse te stvari naredite v zagonski datoteki $HOME/.bashrc bash, kot je prikazano.

$ vim $HOME/.bashrc 

Kopirajte in prilepite naslednje vrstice na koncu te datoteke.

## 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

4. Ko naredite zgornje spremembe, lahko vir datoteke $HOME/.bashrc ali znova zaženete lupino, kot je prikazano.

$ source $HOME/.bashrc
OR
$ exec "$SHELL"

Kako namestiti več različic Pythona v Linux

5. Na tej točki bi morali biti pripravljeni na uporabo pyenv. Preden namestite katero koli različico Pythona, si lahko s tem ukazom ogledate vse razpoložljive različice.

$ pyenv install -l

6. Zdaj lahko na primer prek pyenv namestite več različic Pythona.

$ pyenv install 3.6.4
$ pyenv install 3.6.5

7. Če želite prikazati vse različice Pythona, ki so na voljo pyenvu, zaženite naslednji ukaz. To bo prikazalo samo različice, nameščene prek samega programa pyenv.

$ pyenv versions

8. Globalno različico Pythona lahko preverite z naslednjim ukazom, do takrat mora biti privzeta različica tista, ki jo nastavi sistem, in ne pyenv.

$ pyenv global

Globalno različico pythona lahko nastavite z ukazom pyenv.

$ pyenv global 3.6.5
$ pyenv global

9. Zdaj lahko lokalno različico Pythona nastavite za vsak projekt, na primer, če imate projekt, ki se nahaja v $HOME/python_projects/test, lahko njegovo različico Pythona nastavite z naslednjim ukazom.

$ cd python_projects/test
$ pyenv local 3.6.5
$ pyenv version		#view local python version for a specific project 
OR
$ pyenv versions

10. Pyenv upravlja navidezna okolja prek vtičnika pyenv-virtualenv, ki avtomatizira upravljanje virtualenvs in conda okolij za Python v Linuxu in drugih sistemih, podobnih UNIX.

Začnete lahko z namestitvijo tega vtičnika z naslednjimi ukazi.

$ git clone https://github.com/yyuu/pyenv-virtualenv.git   $HOME/.pyenv/plugins/pyenv-virtualenv
$ source $HOME/.bashrc

11. Zdaj bomo ustvarili testno virtualno okolje, imenovano venv_project1, v okviru projekta, imenovanega project1, kot sledi.

$ cd python_projects
$ mkdir project1
$ cd project1
$ pyenv virtualenv 3.6.5 venv_project1

12. Zdaj, ko navedete vse različice Pythona, morajo biti navedena tudi vaša virtualna okolja in njihove lokalne različice pythona, kot je prikazano na posnetku zaslona.

$ pyenv versions

13. Če želite aktivirati virtualenv, na primer venv_project1, vnesite naslednji ukaz.

$ pyenv activate venv_project1

Opomba: Spodnje sporočilo lahko dobite med prvo uporabo najnovejše različice vtičnika pyenv-virtualenv.

pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.

Dodajte datoteko za izvoz vrstice PYENV_VIRTUALENV_DISABLE_PROMPT = 1 v datoteko $HOME/.bashrc, kamor ste dodali druge konfiguracije pyenv, in datoteko izvorite, da simulirate obnašanje, ki je poudarjeno.

14. Če želite deaktivirati aktiviran virtualenv, zaženite ta ukaz.

$ pyenv deactivate

Za več informacij lahko z naslednjim ukazom navedete vse ukaze pyenv.

$ pyenv commands

Za več informacij obiščite shrambo pyenv Github: https://github.com/pyenv/pyenv

Uporaba pyenv je res tako preprosta. V tem priročniku smo pokazali, kako ga namestiti, ter pokazali nekatere njegove primere uporabe za upravljanje več različic pythona v sistemu Linux. Uporabite spodnji obrazec za povratne informacije, če želite zastaviti kakršno koli vprašanje ali izraziti svoje mnenje o tem orodju.