Eldre avhengigheter
Eldre pakker kan ligge og Python-koden din vil gjerne bruke dem. Dette er ikke et problem hvis Python-skriptene dine er ment å kjøre lokalt, og ikke for industrielle formål. Dataforskere, studenter og til og med vanlige mennesker som automatiserer hverdagsoppgaven deres, kan bare fortsette å bruke de eldre pakkene uten mye av et problem.
Problemet begynner når du sender koden din til produksjon. Når du gjør det, er sjansen stor for at du bare sender hovedskriptet og ikke alle avhengighetene til pakken. For eksempel, hvis du har skrevet en mikrotjeneste som skal sendes som AWS Lambda-funksjon, kan de første linjene importere forespørselsmodul slik:
importforespørselForespørselpakken som leveres av AWS lambda, vil være forskjellig fra den eldre, og som et resultat kan programmet krasje.
Konflikter
Konflikter kan også komme inn i bildet der forskjellige prosjekter bruker forskjellige versjoner av samme pakke. Kanskje noen av de eldre prosjektene dine trenger de eldre pip-pakkene. Men du trenger kanskje den nyere pakken for andre prosjekter. Kjører pip install -U
Python virtuelle miljøer
Hvis du bruker en hvilken som helst versjon av Python over 3.5, kan du bruke en innebygd modul kalt venv til å lage det som kalles Python Virtual Environments. Hva denne modulen gjør er å lage en isolert mappe eller katalog der alle pip-pakkene dine og andre avhengigheter kan leve. Mappen inneholder også et 'aktiver' skript i den. Når du vil bruke et bestemt virtuelt miljø, kjører du ganske enkelt dette skriptet, hvoretter bare pakkene i denne mappen er tilgjengelige. Hvis du kjører pip install, blir pakkene installert i denne mappen og ingen andre steder. Etter at du er ferdig med å bruke et miljø, kan du bare 'deaktivere' det, og bare de globale pipepakkene vil være tilgjengelige for deg.
Hvis du bruker Ubuntu 18.04 og over, trenger du ikke engang å installere pip-pakkebehandling på hele systemet. Pip kan bare eksistere i ditt virtuelle miljø hvis du foretrekker det på den måten.
Installere venv og lage virtuelle miljøer
Ubuntu 18.04 LTS kommer ut av esken med Python 3.6.x, men Python venv-modulen er ikke installert, og heller ikke pip. La oss installere bare venv.
$ apt installere python3-venvDeretter går vi til katalogen der du vil at katalogen for virtuelt miljø skal opprettes. For meg er det ~ / project1
$ cd ~ / prosjekt1Lag din venv med følgende kommando, legg merke til at my-env bare er navnet på det miljøet, du kan gi den navnet hva du vil:
$ python3 -m venv my-envMerk: Noen Python3-installasjoner, som de som er tilgjengelige på Windows, kaller du Python-tolken ved å bruke bare python og ikke python3, men det endres fra system til system. Av hensyn til konsistensen bruker jeg bare python3.
Etter at kommandoen er fullført, vil du legge merke til en ny mappe ~ / project1 / my-evn. For å aktivere det virtuelle miljøet mitt, må du:
- Løpe,
$ kilde ~ / project1 / my-env / bin / aktivere
hvis du bruker Bash.
Det er alternative skript som kalles aktivere.fisk og aktiver.csh for personer som bruker henholdsvis fisk og csh-skjell. - På Windows kan man bruke skriptet ved å kjøre:
>.\ my-env \ Scripts \ aktiver.flaggermus
hvis du bruker ledeteksten, eller,>.\ my-env \ Scripts \ aktiver.ps1
hvis du bruker PowerShell.
Bruke virtuelle miljøer
Når du har kjørt skriptet vellykket, vil du legge merke til at ledeteksten endres til noe som det som vises nedenfor. Du kan nå installere pakker ved hjelp av pip:
(min-env) $ pip3 installasjonsforespørsler## Vi kan liste opp de installerte pakkene med kommandoen 'pip freeze'
(min-env) $ pip3 fryse
sertifisering == 2018.10.15
chardet == 3.0.4
idna == 2.7
pkg-ressurser == 0.0.0
forespørsler == 2.20.1
urllib3 == 1.24.1
Så lenge det virtuelle miljøet er aktivt (som indikert av ledeteksten) lagres alle pakkene bare i katalogen for virtuelt miljø (my-env), uansett hvor du er i filsystemet.
For å komme deg ut av det virtuelle miljøet, kan du skrive deaktivere i ledeteksten, og du vil være tilbake til å bruke den systemdekkende installasjonen av Python. Du kan legge merke til at de nye pakkene vi nettopp har installert, ikke vises i den globale pipinstallasjonen.
For å bli kvitt det virtuelle miljøet, slett bare my-env-mappen som ble opprettet etter at du har kjørt modulen. Du kan opprette så mange av disse miljøene du vil.
Konklusjon
Med venv-modulen er virtuelle miljøer nå tilgjengelige som en standardfunksjon i Python, spesielt hvis du installerer fra Python.org. Tidligere hadde vi mange implementeringer fra tredjeparter kalt virtualenv, pyenv, etc.
Dette ga opphav til mer og mer oppblåst programvare som Anaconda, spesielt populær blant dataforskere. Det er bra å endelig ha et forenklet verktøy for å administrere Python-pakker uten å måtte installere mange andre ikke-relaterte søppel. Du kan lese mer om venv her.