Ohjelmointi

Python virtualenv ja venv do and don'ts

Yksi Pythonin suurimmista piirteistä on sen laaja ekosysteemi kolmansien osapuolten paketeista. Jos on tehtävä, jonka haluat vetää pois - tiedostomuodon muuntaminen, verkkosivujen kaavinta ja uudelleenjärjestely, lineaarinen regressio, nimeät sen - kertoimet ovat, että yksi tai useampi paketti Python-pakettihakemistossa täyttää tarpeesi.

Vaikea osa on pakettien kertymisen hallinta tietyssä Python-asennuksessa. On aivan liian helppoa asentaa kymmeniä paketteja miettimättä ja päästä ajan myötä Python-ympäristöön, joka on täynnä ristiriitoja vanhempien ja uudempien versioiden välillä, mikä tekee työstä vaikeampaa kuin sen pitäisi olla.

Pythonissa on automaattinen järjestelmä, jolla pakettisarja pysyy paikallisena tietyllä Python-projektilla. Virtuaaliset ympäristöt - virtualenv työkalu Python 2: ssa ja venv Python 3: ssa - voidaan luoda erillinen, eristetty Python-ajonaikaisen instanssin projekti omalla pakettiensa täydennyksellä.

Tässä artikkelissa käydään läpi joitain yleisimpiä virheitä, joita ihmiset tekevät - ja niille, joille he luopuvat - työskennellessään virtuaalisten ympäristöjen kanssa Pythonissa.

Käytä Python-virtuaaliympäristöjä

Ensimmäinen yleinen virhe, jonka Python-ohjelmoijat tekevät virtualenv taivenv on vain olla vaivautumatta siihen. Jos kaikki, mitä teet, on heittää yhteen nopea ja likainen käsikirjoitus yksi pieni asia, miksi vaivautua luomaan virtuaalista ympäristöä ollenkaan?

Ongelmana on, että "yksi pieni asia" osoittautuu usein paljon, paljon enemmän. Pythonin hallinnan kasvaessa vääjäämättä päätät hankkia lisää kolmannen osapuolen moduuleja kehittyneemmän työn suorittamiseksi. Lisäksi on entistä vaikeampaa käsitellä riippuvuuksia pakettien aiemmista versioista. Yksi virtuaalisten ympäristöjen tärkeimmistä ongelmista on luotu ratkaista.

Jotkut ihmiset rypistävät myös nenänsä käytön aikana virtualenv taivenv koska jokainen virtuaaliympäristö on oma pieni kopionsa Python-ajonajasta, joka vie noin 25 Mt. Levytila ​​on kuitenkin nykyään naurettavan halpaa, ja virtuaaliympäristön poistaminen on yhtä onnellista kuin sen hakemiston poistaminen (ei sivuvaikutuksia). Lisäksi, jos sinulla on useita tehtäviä, joilla on yhteinen pakettisarja, voit aina käyttää samaa virtuaalista ympäristöä molemmille.

Käytä virtualenvwrapper-ohjelmaa Python-virtuaaliympäristöjen hallintaan

Yksi tapa tehdä virtuaaliympäristöistä vähemmän rasittavia on käyttövirtualenvwrapper. Tämän työkalun avulla voit hallita kaikkia työtilan virtuaaliympäristöjä yhdestä keskitetystä komentorivisovelluksesta.

Sana neuvoja virtuaalisen ympäristön luomisesta: Älä nimeä virtuaalisen ympäristön hakemistoavenv- tai mitä tahansa muuta pakettia, jota haluat käyttää virtuaalisessa ympäristössä. Tällä voi olla arvaamattomia vaikutuksia tuontiin myöhemmin. Käytä nimeä, joka kuvaa projektiasi yksiselitteisesti.

Älä sijoita projektitiedostoja Python-virtuaaliympäristöön

Kun määrität virtuaaliympäristön, hakemistossa, jossa se elää, ei ole tarkoitus olla mitään muuta kuin itse virtuaalinen ympäristö. Projektisi kuuluu omaan erilliseen hakemistopuuhun. Tähän on monia hyviä syitä:

  • Projektisi hakemistopuussa voi hyvinkin olla nimityskäytäntö, joka törmää virtuaalisen ympäristön elementteihin.
  • Helppo tapa poistaa virtuaaliympäristö on poistaa hakemisto. Projektitiedostojen sekoittaminen virtuaaliseen ympäristöön tarkoittaa, että sinun on ensin purettava nämä kaksi.
  • Useat projektit voivat käyttää samaa virtuaalista ympäristöä.

Yksi tapa järjestää asioita olisi luoda ylätason hakemisto, joka pitää sisällään erilaisia ​​virtuaaliympäristöjä, ja toinen ylätason hakemisto, joka pitää sisällään projekteja. Niin kauan kuin nämä kaksi pidetään erillään, sillä on merkitystä.

Älä unohda aktivoida virtuaalista Python-ympäristöäsi

Toinen yleinen virhe, jonka ihmiset tekevät virtuaaliympäristöissä, on unohtaa aktivoida ne tai ei aktivoida oikeaa.

Ennen kuin virtuaaliympäristöä voidaan käyttää tietyssä shell-istunnossa, sen on oltava aktivoitu, nimeltään käsikirjoituksella aktivoida virtuaalisessa ympäristössä Skriptit hakemistoon. Aktivoinnin jälkeen virtuaaliympäristöä käsitellään oletuksena Python-ilmentymänä, kunnes poistat sen käytöstä (suorittamalla deaktivoi komento).

Tämä vaihe on helppo unohtaa aluksi, koska se on tapa, joka on hankittava, ja siksi, että aktivointikomentosarja on yhden tason alapuolella virtuaalisen ympäristön hakemistossa. Pari temppua on kätevä täällä:

  1. Luo pikakuvakkeet aktivointi / deaktivointi-komentosarjoihin projektin juurihakemistossa. Voit nimetä pikakuvakkeet jotain yksinkertaista toimia ja deaktivoitu jotta niiden kirjoittaminen olisi vähemmän häiritsevää.
  2. Luo projektien käynnistysohjelma, joka toimii IDE: llä eikä komentorivillä, komentoriviltä kyseiselle Python-sovellukselle. Tämän avulla voit soittaa aktivointikomentosarjaan ja suorittaa sitten oman komentosarjan jälkeenpäin. Sinun ei yleensä tarvitse poistaa komentosarjaympäristöä käytöstä suorituksen jälkeen, koska istunto päättyy joka tapauksessa itsestään.

Tämä viimeinen temppu korostaa virtuaalisen ympäristön aktivoinnin tärkeätä kohtaa: Ne koskevat vain ympäristöistuntoa, jossa ne suoritetaan. Jos esimerkiksi käynnistät kaksi komentorivi-istuntoa ja aktivoit virtuaalisen ympäristön yhdessä, toinen komentorivi-istunto käyttää järjestelmän oletusarvoinen Python-asennus, ei virtuaalinen ympäristö. Et aktivoi järjestelmän virtuaaliympäristöä kokonaisena, mutta vain tietylle istunnolle.

Älä käytä>= pakettiversioiden kiinnittämistä varten Python-virtuaaliympäristössä

Tämä vinkki on hyödyllinen myös virtuaalisten ympäristöjen ulkopuolella. Kun sinulla on sovellus, jolla on vaatimukset.txt tiedosto, määritä paketit tarkka versionumero. Sanoa oma paketti == 2.2, ei oma paketti> = 2.2.

Tästä syystä. Yksi tärkeimmistä syistä käyttää virtuaaliympäristöä on varmistaa tiettyjen pakettiversioiden käyttö. Jos käytät >= sijasta ==, ei ole mitään takeita siitä, että sinä - tai joku muu - pääset samaan versioon, jos ympäristö on luotava uudelleen kyseiselle projektille. Käytä tarkkaa versionumeroa. Sinä, tulevaisuus sinä ja kuka muu tulee sen jälkeen, kun kiität.

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