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.