Kako upravljati Python projektima s Pipenv-om

Pythonov paketni ekosustav omogućuje vam jednostavnu pip installnaredbu da iskoristite rad milijuna drugih programera . Pythonova virtualna okruženja omogućuju vam međusobno izoliranje projekata i njihovih paketa.

Ali žongliranje okolinama i paketima odvojeno može biti nezgrapno. Dvostruko je tako ako vaši projekti imaju posebne zahtjeve za paketom, a vi se želite usredotočiti na razvoj umjesto na održavanje. Ono što nam treba je način zajedničkog upravljanja okruženjima i paketima. 

Pipenv uvodi upravljanje Python virtualnim okruženjima i Python paketima u jedan alat. Pipenv osigurava da svaki projekt koristi ispravnu verziju svakog paketa koji mu treba i da svaki od tih paketa također ima točne ovisnosti.

Nadalje, Pipenv generira popis ovisnosti vašeg projekta koji mogu putovati s njim, omogućujući drugim korisnicima ili programerima da postave isti projekt na isti način. Drugi korisnici također će morati instalirati Pipenv da bi pravilno postavili projekt kojim upravlja Pipenv, ali na sreću, instaliranje i korištenje Pipenva predstavlja povjetarac. 

Kako Pipenv radi

Tipično kada kreirate projekt Python i koristite virtualno okruženje za njegove pakete, imate zadatak da sami kreirate virtualno okruženje (pomoću naredbe  py -m venv), instalirate ovisnosti u njega i ručno pratite ovisnosti.

Pipenv pruža način da se sve to izvede poluautomatski. Virtualno okruženje za vaš projekt kreira se i njime se upravlja kada instalirate pakete putem sučelja naredbenog retka Pipenv. Ovisnosti se prate i zaključavaju, a ovisnostima o razvoju i izvođenju možete upravljati odvojeno. Također možete migrirati iz postojećih old-school requirements.txtdatoteka, tako da ne trebate razdvajati svoj projekt i pokretati ga ispočetka da biste dobro koristili Pipenv.

Imajte na umu da za razliku od ostalih Python alata za upravljanje projektima (poput Poezije), Pipenv ne upravlja "skelama" vašeg projekta. Odnosno, Pipenv ne stvara unutarnju strukturu direktorija projekta s lažnim testovima, dokumentacijom itd., Već se uglavnom fokusira na upravljanje paketima i okolišem. To čini Pipenv dobrim izborom ako samo želite alat koji se usredotočuje na virtualna okruženja i pakete, a ne cjelovito rješenje.

Započnite s Pipenvom

Pipenv instalira na isti način kao i većini bilo koji drugi Python paketa: pip install --user pipenv. Preporučuje se --useropcija da se Pipenv spriječi u sukobu s ostalim paketima širom sustava. Također biste trebali dodati stazu do binarnog direktorija korisničke baze na sistemsku stazu, tako da se naredbe Pipenv usmjere na pravo mjesto.

Ako Pipenv planirate učiniti dosljednim dijelom svog tijeka rada, također je dobra ideja da osnovna instalacija Pythona bude što manja. Taj se savjet odnosi na većinu bilo koje instalacije Pythona koja koristi virtualna okruženja.

Postavite novi projekt s Pipenvom

Da biste započeli potpuno novi projekt s Pipenv, samo stvorite direktorij i popunite ga datotekama koje biste obično kreirali za projekt. Ako ste skloni skenirati projekt u hodu, možete započeti s praznim direktorijumom.

Instaliranje paketa za projekt ne razlikuje se bitno od Pipenva nego kod Pip-a; zapravo je sintaksa gotovo ista. Otvorite konzolu u direktoriju projekta i upišite pipenv install da biste instalirali paket za projekt. Da biste naveli da je paket za razvoj , upotrijebite -dzastavicu. Možete koristiti pip sintaksu za označavanje određenu verziju paketa (npr black==13.0b1).

Kada instalirate paket s Pipenv, događaju se dvije stvari. Prvo će Pipenv provjeriti je li virtualno okruženje već stvoreno za ovaj direktorij projekta. Ako je odgovor da, Pipenv će instalirati paket u postojeće virtualno okruženje. Ako nije, Pipenv će stvoriti virtualno okruženje koje koristi isto izdanje Pythona koje se koristi za pokretanje Pipenva. Imajte na umu da virtualno okruženje nije stvoreno u samom direktoriju projekta; stvoren je u direktoriju kojim upravlja Pipenv u vašem korisničkom profilu.

Drugo, Pipenv će instalirati tražene pakete u virtualno okruženje. Kad se instalacija završi, Pipenv će izvijestiti o svemu što je učinio, uključujući put do virtualnog okruženja ako ga mora stvoriti.

Općenito ne trebate znati put do virtualnog okruženja koje Pipenv stvara. Da biste aktivirali okruženje, samo prijeđite do direktorija vašeg projekta i upotrijebite ga  pipenv shellza pokretanje nove sesije ljuske ili  pipenv run za izravno pokretanje naredbe. Na primjer, koristite  pipenv run mypyza pokretanje verzije alata naredbenog retka mypy(pod pretpostavkom da je mypyalat instaliran u virtualnom okruženju) ili pipenv run python -m za pokretanje Python modula dostupnog u virtualnom okruženju.

Pipenv i datoteke zaključavanja

Zavirite u direktorij nakon što instalirate pakete s Pipenv i vidjet ćete dvije datoteke Pipfilei Pipfile.lock. Obje je automatski generirao Pipenv i ne bi ih trebao izravno uređivati ​​jer opisuju stanje paketa u projektu.

Pipfileje jednostavnije od njih dvoje. Samo navodi pakete potrebne za projekt, odakle se instaliraju (zadana vrijednost je PyPI) i koja je inačica Pythona potrebna za pokretanje svega. Pipfile.lockje složeniji. Navodi svaki paket zajedno s pojedinostima o verziji i SHA-256 hešovima generiranim iz paketa. Hash-ovi se koriste kako bi se osiguralo da instalirani paketi odgovaraju točno onome što je navedeno - ne samo broj verzije, već i dobiveni sadržaj.

Kada radite na projektu koji koristi Pipenv za upravljanje paket, da ćete želite dodati Pipfilei Pipfile.lockdatoteke na upravljanje verzijama spremište za projekt. Sve promjene napravljene na paketima za vaš projekt izmijenit će te datoteke, tako da te promjene treba pratiti i verzionirati.

Koristite projekt Pipenv

Ako preuzmete izvorno spremište za projekt koji koristi Pipenv za upravljanje paketima, sve što morate učiniti je raspakirati sadržaj spremišta u direktorij i pokrenuti pipenv install(nisu potrebna imena paketa). Pipenv će pročitati Pipfilei Pipfile.lockdatoteke za projekt, stvoriti virtualno okruženje i po potrebi instalirati sve ovisnosti.

Konačno, ako želite koristiti Pipenv za upravljanje projektom koji trenutno koristi requirements.txtdatoteku, samo dođite do direktorija projekta i pokrenite pipenv install. Pipenv će otkriti  requirements.txt(ili možete upotrijebiti -rzastavicu da pokažete na njega) i migrirati sve zahtjeve u Pipfile.