Pyenv - Fi ọpọlọpọ Awọn ẹya Python sii fun Iṣẹ akanṣe Kan


Ṣiṣakoso awọn ẹya pupọ ti Python lori eto Linux kii ṣe iṣẹ ti o rọrun, paapaa fun awọn olubere. Nigbakan paapaa o buru si nigbati o ba fẹ lati dagbasoke ati ṣiṣe awọn iṣẹ lọpọlọpọ pẹlu oriṣiriṣi awọn ẹya Python lori olupin kanna. Sibẹsibẹ, eyi ko yẹ ki o jẹ ọran ti o ba bẹ pyenv.

Pyenv jẹ ohun elo ti o rọrun, ti o lagbara ati irinṣẹ agbelebu fun iṣakoso awọn ẹya Python pupọ lori awọn ọna ṣiṣe Linux, ti o lo fun.

  • Yiyi ẹya Python agbaye ka lori ipilẹ olumulo kọọkan.
  • ṣiṣeto ẹya Python agbegbe lori ipilẹ iṣẹ akanṣe.
  • Ṣiṣakoṣo ti awọn agbegbe foju ti o ṣẹda nipasẹ anaconda tabi virtualenv.
  • Ṣiṣakoso ẹda Python pẹlu oniyipada ayika kan.
  • Wiwa awọn aṣẹ lati awọn ẹya pupọ ti Python ati diẹ sii.

Nigbagbogbo, ẹda aiyipada kan ti Python ni a lo lati ṣiṣẹ gbogbo awọn ohun elo rẹ, ayafi ti o ba ṣafihan pato ẹya ti o fẹ lati lo laarin ohun elo naa. Ṣugbọn pyenv n ṣe agbekalẹ ero ti o rọrun fun lilo shims (awọn alaṣẹ fẹẹrẹ fẹẹrẹ) lati ṣe aṣẹ rẹ si ẹya Python to tọ ti o fẹ lo, nigbati o ba ti fi awọn ẹya pupọ sii.

Ti fi sii awọn shims wọnyi nipasẹ pyenv ninu awọn ilana ni iwaju PATH rẹ. Nitorinaa nigbati o ba ṣiṣẹ aṣẹ Python kan, o ti gba wọle nipasẹ shim ti o yẹ ki o kọja si pyenv, eyiti o ṣe agbekalẹ ẹya Python ti o ti ṣalaye nipasẹ ohun elo rẹ, ti o kọja awọn aṣẹ rẹ pẹlu fifi sori Python ẹtọ. Eyi jẹ iwoye ti bii pyenv ṣe n ṣiṣẹ.

Ninu nkan yii, a yoo fihan bi a ṣe le fi ẹya tuntun ti pyenv sori ẹrọ ni Linux. A yoo tun ṣe afihan ọran akọkọ awọn lilo mẹta ti a ṣe akojọ loke.

Bii o ṣe le Fi Pyenv sori Linux

1. Ni akọkọ fi sori ẹrọ gbogbo awọn idii ti a beere fun fifi awọn oriṣiriṣi awọn ẹya Python sori ẹrọ lati awọn orisun nipa lilo pipaṣẹ atẹle lori ipinpinpin Linux tirẹ.

------------ 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. Nigbamii, gba igi orisun pyenv tuntun lati ibi ipamọ Github rẹ ki o fi sii ni ọna $HOME/.pyenv ni lilo pipaṣẹ atẹle.

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

3. Bayi o nilo lati ṣeto oniyipada ayika PYENV_ROOT lati tọka si ọna ibiti o ti fi pyenv sori ẹrọ ati gbe si okeere. Lẹhinna ṣafikun $PYENV_ROOT/bin si PATH rẹ lati ṣiṣe iwulo laini aṣẹ pyenv bii eyikeyi awọn ilana eto miiran.

O tun nilo lati mu shims ṣiṣẹ bi daradara bi ipari adaṣe nipa fifi pyenv init si ikarahun rẹ kun. Ṣe gbogbo nkan wọnyi ninu faili ibẹrẹ $HOME/.bashrc rẹ, bi o ti han.

$ vim $HOME/.bashrc 

Daakọ ati lẹẹ mọ awọn ila atẹle ni opin faili yii.

## 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. Lọgan ti o ba ti ṣe awọn ayipada ti o wa loke, o le ṣe orisun faili $HOME/.bashrc tabi tun bẹrẹ ikarahun bi o ti han.

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

Bii o ṣe le Fi Awọn ẹya Python pupọ sii ni Linux

5. Ni aaye yii, o yẹ ki o ṣetan lati bẹrẹ lilo pyenv. Ṣaaju ki o to fi eyikeyi ẹya Python sori ẹrọ, o le wo gbogbo awọn ẹya ti o wa pẹlu aṣẹ yii.

$ pyenv install -l

6. O le fi sori ẹrọ bayi ẹya Python pupọ nipasẹ pyenv, fun apẹẹrẹ.

$ pyenv install 3.6.4
$ pyenv install 3.6.5

7. Lati ṣe atokọ gbogbo awọn ẹya Python ti o wa fun pyenv, ṣiṣe aṣẹ atẹle. Eyi yoo fihan nikan awọn ẹya ti a fi sii nipasẹ pyenv funrararẹ.

$ pyenv versions

8. O le ṣayẹwo ẹya Python agbaye pẹlu aṣẹ atẹle, ni akoko yii, ẹya aiyipada yẹ ki o jẹ eyi ti eto naa ṣeto, kii ṣe pyenv.

$ pyenv global

O le ṣeto ẹya python agbaye nipa lilo aṣẹ pyenv.

$ pyenv global 3.6.5
$ pyenv global

9. O le ṣeto bayi ẹya Python ti agbegbe lori ipilẹ iṣẹ akanṣe, fun apẹẹrẹ, ti o ba ni iṣẹ akanṣe kan ti o wa ni $HOME/python_projects/test, o le ṣeto ẹya Python ti rẹ nipa lilo pipaṣẹ atẹle.

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

10. Pyenv n ṣakoso awọn agbegbe foju nipasẹ ohun itanna pyenv-virtualenv eyiti o ṣe adaṣe adaṣe ti virtuellelen ati awọn agbegbe conda fun Python lori Lainos ati awọn ọna miiran ti o jọ UNIX.

O le bẹrẹ nipa fifi ohun itanna yii sii nipa lilo awọn ofin atẹle.

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

11. Bayi a yoo ṣẹda agbegbe foju idanimọ ti a pe ni venv_project1 labẹ iṣẹ akanṣe kan ti a pe ni project1 bi atẹle.

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

12. Bayi nigbati o ba ṣe atokọ gbogbo awọn ẹya Python, awọn agbegbe foju rẹ bakanna bi awọn ẹya Python ti agbegbe wọn yẹ ki o ṣe atokọ tun, bi o ṣe han ninu sikirinifoto.

$ pyenv versions

13. Lati muu iṣẹ rere kan ṣiṣẹ, fun apẹẹrẹ venv_project1, tẹ iru aṣẹ atẹle.

$ pyenv activate venv_project1

Akiyesi: O le gba ifiranṣẹ ni isalẹ lakoko lilo ẹya tuntun ti ohun itanna pyenv-virtualenv fun igba akọkọ.

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

Ṣafikun okeere okeere PYENV_VIRTUALENV_DISABLE_PROMPT = 1 ninu faili $HOME/.bashrc rẹ, nibiti o ti ṣafikun awọn atunto pyenv miiran, ati orisun faili lati ṣedasilẹ ihuwasi ti a tẹnumọ.

14. Lati mu maṣe mu ṣiṣẹ virualenv, ṣiṣe aṣẹ yii.

$ pyenv deactivate

Fun alaye diẹ sii, o le ṣe atokọ gbogbo awọn aṣẹ pyenv nipa lilo pipaṣẹ atẹle.

$ pyenv commands

Fun alaye diẹ sii, lọ si ibi ipamọ Github pyenv: https://github.com/pyenv/pyenv

Lilo pyenv jẹ iyẹn rọrun. Ninu itọsọna yii, a fihan bi a ṣe le fi sii, bii a ṣe afihan diẹ ninu awọn ọran lilo rẹ fun ṣiṣakoso ọpọlọpọ awọn ẹya python lori eto Linux. Lo fọọmu esi ni isalẹ lati beere eyikeyi ibeere tabi pin awọn ero rẹ nipa ọpa yii.