Kuidas hallata mitut Pythoni versiooni ja virtuaalset keskkonda

Lisamine jaanuar 2019: kui naasete pärast ajakohastamist MacOS Mojave'ile sellesse ajaveebi, vaadake seda githubi väljaannet lahenduse leidmiseks levinud pyenv 'zlib not available' probleemile.

Enne alustamist tutvume lühidalt pealkirjas kasutatud mõistetega:

  • Mitu Pythoni versiooni : Pythoni erinevad installid samale masinale, näiteks 2.7 ja 3.4.
  • Virtuaalsed keskkonnad : eraldatud sõltumatud keskkonnad, kuhu võib olla installitud nii konkreetne Pythoni versioon kui ka kõik projektipõhised paketid, mõjutamata ühtegi teist projekti.

Siinkohal vaatame kolme erinevat tööriista nendega töötamiseks ja millal neid võib vaja minna. Uurime järgmise juhtumi kasutamise juhtumeid

  • venv / pyvenv
  • pyenv
  • pyenv-virtualenv

Kui te kasutate ühe versiooni Python ütleme versioon 3.3+ ja soovivad juhtida erinevaid virtuaalseid keskkondi, siis venvon kõik, mida vaja.

Kui soovite kasutada Pythoni mitut versiooni 3.3+ , virtuaalsete keskkondadega või ilma , jätkake selle kohta lugemist pyenv.

Kui soovite töötada ka Python 2-ga , pyenv-virtualenvon see tööriist, mida kaaluda.

venv

Paketist Python 3.3+ venvon lisatud. See sobib ideaalselt kergete virtuaalsete keskkondade loomiseks.

Kuni Python 3.6-ni oli paketina pyvenvlisatud ka nn skript venv, kuid see on iganenud. See eemaldatakse täielikult Python 3.8-s. Kasutamisel on saadaval täpselt sama funktsioon venvja kogu olemasolevat dokumentatsiooni tuleks värskendada. Kõigile huvilistele saate lugeda amortiseerumise põhjuseid pyvenv.

venv kasutatakse terminali käsu abil uue keskkonna loomiseks:

$ python3 -m venv directory-name-to-create

aktiveeritud järgmisega:

$ source name-given/bin/activate

ja deaktiveeritakse lihtsalt:

$ deactivate

Kui peate pärast deaktiveerimist keskkonna täielikult eemaldama, võite käivitada:

$ rm -r name-given

Vaikimisi on selle loodud keskkond teie kasutatava Pythoni praegune versioon. Kui kirjutate dokumentatsiooni ja soovite täiendavat turvalisust, et teie lugeja kasutab Pythoni õiget versiooni, saate käsus määrata peamise ja väiksema versiooni numbri, näiteks:

$ python3.6 -m venv example-three-six

Kui lugeja kasutab muud versiooni kui 3.6, siis käsk ei õnnestu ja see kuvatakse selle tõrketeates. Kuid mõni plaastri versioon (näiteks 3.6.4) töötab.

Kui keskkond on aktiivne, saab sinna installida mis tahes pakette pipnagu tavaliselt. Vaikimisi ei sisalda vastloodud keskkond ühtegi masinasse juba installitud paketti. Kuna pipiseenesest ei pruugi seda masinasse installida. Kõigepealt on soovitatav uuendada pipuusimale versioonile pip install --upgrade pip.

Projektidel on tavaliselt requirements.txtfail, mis määrab nende sõltuvused. See võimaldab kiirkäsklusel pip install -r requirements.txtkõik paketid kiiresti äsja loodud virtuaalsesse keskkonda installida. Need eksisteerivad ainult virtuaalses keskkonnas. See ei ole saadaval, kui see deaktiveeritakse, kuid püsib uuesti aktiveerimisel.

Kui te ei pea kasutama Pythoni enda täiendavaid versioone, siis on see kõik, mida vajate eraldatud projektipõhiste virtuaalsete keskkondade loomiseks.

pyenv

Kui soovite ühes masinas kasutada Pythoni mitut versiooni, pyenvon see versioonide installimiseks ja vahetamiseks tavaliselt kasutatav tööriist. Seda ei tohi segi ajada varem mainitud amortiseerunud pyvenvskriptiga. See ei ole Pythoniga komplektis ja tuleb installida eraldi.

pyenvDokumentatsiooni sisaldab väga kirjeldus, kuidas see töötab, nii et siin me vaatame lihtsalt, kuidas seda kasutada.

Esiteks peame selle installima. Kui kasutate Mac OS X-i, saame seda teha Homebrew abil, muul juhul kaaluge muid installimisvõimalusi.

$ brew update $ brew install pyenv

Järgmisena lisage oma shelliskriptide allserva järgmised andmed, et saaksite oma pyenvversioone automaatselt muuta:

eval "$(pyenv init -)"

Selleks avage kasutusel skripti kaudu $ ~/.zshrc, $ ~/.bashrcvõi $ ~/.bash_profilekleepides eespool rida.

Käivitamine pyenv versionsnäitab, millised Pythoni versioonid on praegu installitud, *kõrval on praegu kasutusel olev versioon. pyenv versionnäitab seda otse ja python --versionseda saab kasutada selle kinnitamiseks.

Täiendava versiooni installimiseks 3.4.0kasutage näiteks pyenv install 3.4.0.

pyenv otsib neljast kohast, et otsustada, millist Pythoni versiooni kasutada, prioriteetses järjekorras:

  1. PYENV_VERSIONKeskkonnamuutuja (kui see on määratud). Selle pyenv shellkäsu abil saate selle keskkonnamuutuja seadistada oma praeguses shelliseansis.
  2. Rakenduspõhine .python-versionfail praeguses kataloogis (kui see on olemas). Praeguse kataloogi .python-versionfaili saate muuta pyenv localkäsuga.
  3. Esimene .python-versionleitud fail (kui see on olemas) otsides igast vanemkataloogist, kuni jõuate failisüsteemi juure.
  4. Globaalne versioonifail. Seda faili saate muuta pyenv globalkäsu abil. Kui globaalse versiooni faili pole, eeldab pyenv, et soovite kasutada "süsteemi" Pythoni. (Teisisõnu, ükskõik milline versioon töötaks, kui pyenvit poleks teie sees PATH.)

Uue projekti seadistamisel, mis peab kasutama Pythoni 3.6.4, pyenv local 3.6.4käivitatakse see selle juurkataloogis. See määraks nii versiooni kui ka .python-versionfaili, nii et teiste kaasautorite masinad selle üles võtaksid.

pyenvJärjehoidjate hulka kuulub käskude täielik kirjeldus .

pyenv ja venv

Kui töötame koos Python 3.3+-ga, teame nüüd nii seda, kuidas Pythoni eri versioone installida ja vahetada, kui ka uute virtuaalsete keskkondade loomist.

Oletame näiteks, et me seadistasime projekti, mis pidi kasutama Python 3.4-d.

Kõigepealt saime oma kohaliku versiooni seadistada pyenv local 3.4.0.

Kui me siis käivitaksime, python3 -m venv example-projectseadistatakse uus virtuaalne keskkond example-projectmeie kohalikult lubatud Python 3.4.0 abil.

Aktiveerime kasutamise source example-project/bin/activateja saame tööle hakata.

Järgmisena võiksime soovi korral dokumenteerida, et kaastööline peaks seda kasutama python3.4 -m venv . See tähendab, et isegi kui kaastööline ei kasutanud pyenv-d, python3.4viga, kui nende Pythoni versioon ei olnud sama suur ja väike versioon (3 ja 4), nagu me ette nägime.

Teise võimalusena võiksime valida, kas määratleda lihtsalt 3.4.0 ja õpetada python3 -m venv . Kui me usume, et kõik ve rsion g reater kui 3,4 on vastuvõetav, siis me ka võib valida python3üle python3.4, sest kui kaasautori kasutas 3,6 siis nad muidu ka veateate. See on projektipõhine otsus.

pyenv-virtualenv

pyenvsaab kasutada nii Python 2 kui ka 3 versiooni installimiseks. Kuid nagu oleme näinud, venvpiirdub Pythoni versioonidega, mis on suuremad kui 3,3.

pyenv-virtualenvon tööriist virtuaalsete keskkondade loomiseks, mis on integreeritud pyenvPythoni kõigi versioonidega ja töötab kõigi nende versioonidega. Ikka soovitatakse võimaluse korral kasutada ametlikku Pythoni venv. Aga kui loote näiteks selle põhjal virtuaalset keskkonda 2.7.13, siis see teeb komplimente pyenv.

See töötab hästi ka Anaconda ja Miniconda condakeskkondadega, kui te neid juba kasutate. virtualenvSamuti on olemas tööriist nimega . Siin seda ei käsitleta, kuid see on lõpus ühendatud.

Pärast installimist pyenvsaab selle järgmiselt installida Homebrew'i (või alternatiivide) abil:

$ brew install pyenv-virtualenv

Järgmisena lisage oma .zshrc, .bashrcvõi .bash_profile(olenevalt kasutatavast kestast) põhja poole järgmine:

eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"

See võimaldab pyenvkeskkondi kataloogide teisaldamisel automaatselt sisse ja välja lülitada.

Uue virtuaalse keskkonna loomiseks kasutage järgmist.

$ pyenv virtualenv   // for example $ pyenv virtualenv 2.7.10 my-virtual-env-2.7.10

Olemasolevad keskkonnad saab loetleda järgmiselt:

$ pyenv virtualenvs

Aktiveeritud / deaktiveeritud:

$ pyenv activate  $ pyenv deactivate

Kirjutamise ajal kuvatakse activatehoiatus prompt changing will be removed from future releasekasutamisel. See on eeldatav ja viitab ainult (env-name)teie shellis kuvatavale olekule, mitte activatekäsu enda kasutamisele.

Nõuete installimine töötab vastavalt kirjeldusele venv. Erinevalt käsk ei ole vaja eemaldada keskkonnas, käsk olemas.venvrm -runinstall

Lõpumõtted

Nende kolme tööriista vahel on meil võimalus teha koostööd mis tahes projektiga, olenemata Pythoni versioonist või vajalikest sõltuvustest. Samuti teame, kuidas dokumenteerida seadistamisjuhised, mida teised saavad kasutada iga projekti jaoks, millega töötame.

Samuti näeme põhjendusi, millist komplekti kasutada, kuna kõik arendajad ei vaja kõiki kolme.

Loodetavasti oli sellest abi ja see on kasulik viide koos allpool lingitud dokumentidega.

Täname lugemast! ?

Muud asjad, mida olen uurinud:

  • ES- ja CommonJS-moodulite pilkamine jest.mockiga ()
  • Algaja juhend Amazoni elastsete konteinerite teenusele

Ressursid

  • Pythoni virtuaalsed keskkonnad: aabits
  • Amortiseeriv pyvenv
  • Pythoni venvdokumentatsioon
  • venv vs. virtualenv
  • Mis vahe on venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenv jne vahel?
  • Kas ma pean installima pip?