Ohjelmointi

Virtualenv ja venv: Python-virtuaaliympäristöt selitetty

Kaikista syistä, joiden vuoksi Python on kehittäjien suosikki, yksi suurimmista on sen laaja ja jatkuvasti laajeneva valikoima kolmansien osapuolten paketteja. Kätevät työkalupaketit kaikkeen tiedon keräämisestä ja muotoilusta nopeaan matematiikkaan ja koneoppimiseen ovat vain tuonti tai pip asennus pois.

Mutta mitä tapahtuu, kun nuo paketit eivät pelaa hienosti keskenään? Mitä teet, kun erilaiset Python-projektit tarvitsevat kilpailevia tai yhteensopimattomia versioita samoista lisäosista? Siellä tulevat esiin Pythonin virtuaaliset ympäristöt.

Voit luoda ja työskennellä virtuaalisten ympäristöjen kanssa sekä Python 2: ssa että Python 3: ssa, vaikka työkalut ovatkin erilaiset. Virtualenv on valinta työkalu Python 2: lle, kun taas venv hoitaa tehtävää Python 3: ssa.

Mitä ovat Python-virtuaaliympäristöt?

Virtuaalinen ympäristö on tapa saada useita, rinnakkaisia ​​Python-tulkin esiintymiä, joista jokaisella on erilaiset pakettijoukot ja erilaiset kokoonpanot. Jokainen virtuaaliympäristö sisältää erillisen kopion Python-tulkkista, mukaan lukien kopiot sen tukiohjelmista.

Kuhunkin virtuaaliympäristöön asennetut paketit näkyvät vain kyseisessä virtuaaliympäristössä eikä missään muussa. Jopa suuret, monimutkaiset paketit, joissa on alustasta riippuvat binäärit, voidaan erottaa toisistaan ​​virtuaalisissa ympäristöissä.

Virtuaalisessa ympäristössä on muutamia yleisiä käyttötapauksia:

  1. Kehität useita projekteja, jotka riippuvat samojen pakettien eri versioista, tai sinulla on projekti, joka on eristettävä tietyistä paketeista nimiavaruuden törmäyksen vuoksi. Tämä on tavallisin käyttötapaus.
  2. Työskentelet Python-ympäristössä, jossa et voi muokata sivustopakettihakemistoa. Tämä voi johtua siitä, että työskentelet erittäin valvotussa ympäristössä, kuten hallinnoidussa isännöinnissä, tai palvelimella, jossa tulkin (tai siinä käytettyjen pakettien) valintaa ei voida muuttaa tuotantovaatimusten vuoksi.
  3. Haluat kokeilla tiettyä pakettien yhdistelmää erittäin kontrolloiduissa olosuhteissa, esimerkiksi ristiin- tai taaksepäin.
  4. Haluat käyttää Python-tulkin "perusviivaa" järjestelmässä, jossa ei ole kolmannen osapuolen paketteja, ja asenna kolmannen osapuolen paketteja vain kullekin yksittäiselle projektille tarpeen mukaan.

Mikään ei sano, että et voi yksinkertaisesti purkaa Python-kirjastoa projektin alikansioon ja käyttää sitä tällä tavalla. Samoin voit ladata erillisen kopion Python-tulkkista, purkaa sen kansioon ja käyttää sitä siihen omistettujen komentosarjojen ja pakettien suorittamiseen.

Mutta tällaisten mukulakivisten projektien hallinta tulee pian vaikeaksi. Se vain näyttää helpompi tehdä se aluksi. Työskentely paketeilla, joissa on binaarikomponentteja tai jotka luottavat monimutkaisiin kolmansien osapuolten riippuvuuksiin, voi olla painajainen. Paras pitkäaikainen ratkaisu on käyttää Pythonin natiivimekanismeja virtuaalisten ympäristöjen luomiseen ja työskentelyyn.

Virtuaaliset ympäristöt Python 3: ssa

Virtualenv on osoittautunut välttämättömäksi lukemattomille Python-kehittäjille, mutta se ei ole osa Pythonin vakiokirjastoa. Python 3: lla on natiivityökalut virtuaalisiin ympäristöihin, mikä tekee koko prosessista melko yksinkertaisen.

Liittyvä video: Kuinka Python tekee ohjelmoinnista helpompaa

IT-tekniikalle täydellinen Python yksinkertaistaa monenlaista työtä järjestelmän automaatiosta huipputeknisillä aloilla, kuten koneoppiminen.

Luo virtuaalinen ympäristö

Luo virtuaalinen ympäristö tiettyyn hakemistoon kirjoittamalla:

python3 -m venv / polku / hakemistoon

(Huomaa, että voit käyttää vainpython sijasta python 3 jos järjestelmä tunnistaa python oletuksena Python 3 -tulkkina.)

Koko virtuaalisen ympäristön luominen voi kestää minuutin tai kaksi. Kun se on valmis, sinulla pitäisi olla hakemisto, jossa on muutama alihakemisto. Tärkein alihakemisto onbin Unix- taiSkriptit Windowsista, josta löydät kopion virtuaalisen ympäristön Python-tulkkista yhdessä sen apuohjelmien kanssa.

Huomaa, että koska jokainen virtuaaliympäristö sisältää oman kopion Python-tulkit, se voi olla melko suuri. Windowsissa ja Linuxissa Python 3.6 -ympäristö kuluttaa noin 23 Mt levytilaa.

Aktivoi virtuaalinen ympäristö

Ennen kuin voit käyttää tätä virtuaalista ympäristöä, sinun on nimenomaisesti aktivoida se. Aktivointi tekee virtuaaliympäristöstä oletus Python-tulkin istunnon ajaksi.

Sinun on käytettävä eri syntaksia virtuaalisen ympäristön aktivoimiseksi sen mukaan, mitä käyttöjärjestelmää ja komentokäskyä käytät.

  • Unix- tai MacOS-käyttöjärjestelmissä käyttämällä bash-kuorta: lähde / polku / kohteeseen / venv / bin / aktivoi
  • Unix- tai MacOS-käyttöjärjestelmissä csh-kuori: lähde /path/to/venv/bin/activate.csh
  • Unix- tai MacOS-käyttöjärjestelmissä kalan kuori: lähde /path/to/venv/bin/activate.fish
  • Windowsissa, jossa on komentokehote:polku \ venv \ Scripts \ activ.bat
  • PowerShelliä käyttävissä Windows-käyttöjärjestelmissä: polku \ venv \ Scripts \ Activate.ps1

Huomaa, että aktivoitu ympäristö toimii vain siinä kontekstissa, jossa se aktivoitiin. Esimerkiksi, jos käynnistät kaksi PowerShell-esiintymää, A ja B, ja aktivoit virtuaalisen ympäristön vain esimerkissä A, kyseinen ympäristö koskee vain A: ta. Se ei päde missään muualla.

Määritä ja käytä virtuaaliympäristöä

Kun olet aktivoinut uuden virtuaalisen ympäristön, voit lisätä ja muuttaa paketteja pip-paketinhallinnan avulla. Löydät pipin Skriptit virtuaalisen ympäristön alihakemisto Windowsissa ja bin alihakemisto Unix-käyttöjärjestelmissä.

Jos olet jo perehtynyt pipin toimintaan, olet valmis. Sen pitäisi olla aivan sama virtuaalisessa ympäristössä. Varmista vain, että käytät virtuaalisen ympäristön paketteja hallitsevaa pip-ilmentymää siinä yhteydessä, jossa se aktivoitiin - esim. Bash-istunto tai Windows CLI / PowerShell -istunto. Jos haluat varmistaa, että käytät oikeaa pipiä ja oikeaa virtuaaliympäristöä, kirjoita pip -V ja tarkista, että sen näyttämä polku osoittaa virtuaalisen ympäristön alihakemistoon.

Jos haluat käyttää luomasi virtuaaliympäristöä Python-komentosarjojen suorittamiseen, yksinkertaisesti pyydä Python komentoriviltä siinä kontekstissa, jossa aktivoit sen.

Virtuaalisen ympäristön deaktivointi

Kun virtuaalinen ympäristö on valmis, voit vain lopettaa istunnon siellä, missä sitä käytit. Jos haluat jatkaa työskentelyä ympäristössä, mutta sen sijaan oletusarvoisen Python-tulkin kanssa, kirjoita deaktivoi pyydettäessä. Komentokehotteessa olevien Windows-käyttäjien on suoritettava deactivate.bat alkaen Skriptit alihakemisto, mutta Unix-käyttäjät ja Windows-käyttäjät, jotka käyttävät PowerShelliä, voivat yksinkertaisesti kirjoittaa deaktivoi missä tahansa hakemistossa.

Virtuaalisen ympäristön poistaminen

Virtuaaliset ympäristöt ovat itsenäisiä. Kun et enää tarvitse virtuaaliympäristöä, voit vain poistaa sen hakemiston.

Virtuaaliset ympäristöt Python 2: ssa

Python 2: n avulla virtuaaliympäristöt eivät ole kielen natiivi ominaisuus. Sen sijaan sinun on asennettava kolmannen osapuolen kirjastoja virtuaalisten ympäristöjen luomiseksi ja hallitsemiseksi.

Suosituin ja yleisimmin käytetty projekti on virtualenv, joka hoitaa hakemistorakenteen luomisen ja tarvittavien tiedostojen kopioinnin virtuaaliseen ympäristöön. Asenna virtualenv vain käyttämällä pip asenna virtualenv. Voit luoda virtuaalisen ympäristön hakemiston kirjoittamalla virtualenv / polku / hakemistoon. Virtuaalisen ympäristön aktivointi ja deaktivointi toimii samalla tavalla kuin Python 3: n virtuaalisten ympäristöjen kohdalla (katso yllä).

Virtuaalisten ympäristöjen käyttö Jupyter-kannettavien kanssa

Jos käytät Jupyter-muistikirjoja (alias IPython-muistikirjoja) ja Jupyter on jo asennettu koko järjestelmään, luo virtuaalinen ympäristö ja aktivoi se. Suorita sitten virtuaalisen ympäristön hakemistosta pip asenna ipykernel lisätä tarvittavat komponentit IPythonille. Lopuksi aja ipython-ytimen asennus — käyttäjän — nimi =, jossa projektin_nimi on nimi, jonka haluat liittää kyseiseen projektiin. Sieltä sinun pitäisi pystyä käynnistämään Jupyter ja siirtymään virtuaaliseen ympäristöön asentamaasi IPython-ytimeen.

$config[zx-auto] not found$config[zx-overlay] not found