Python

Virtuelle miljøer i Python 3

Virtuelle miljøer i Python 3
Som folk flest hater jeg å installere unødvendige pakker på arbeidsstasjonen min. Når du er ferdig med dem, er det aldri nok å avinstallere dem. Pakker legger igjen tonnevis av mapper og filer. De krever mange andre (obskure) pakker også etterlatt i kjølvannet av ting. Sakte, men sikkert, bygger disse tingene seg opp på arbeidsstasjonen din, og selv om de kanskje ikke hogger noen betydelig del av diskplassen din, kan de forårsake andre problemer.

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ørsel

Forespø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 vil oppgradere pakken på tvers av operativsystemet ditt og forårsake problemer når du går tilbake til å opprettholde dine eldre prosjekter.

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-venv

Deretter går vi til katalogen der du vil at katalogen for virtuelt miljø skal opprettes. For meg er det ~ / project1

$ cd ~ / prosjekt1

Lag 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-env

Merk: 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:

  1. 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.
  2. 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.

Mus Hvordan endre mus og berøringsplateinnstillinger ved hjelp av Xinput i Linux
Hvordan endre mus og berøringsplateinnstillinger ved hjelp av Xinput i Linux
De fleste Linux-distribusjoner leveres med "libinput" -biblioteket som standard for å håndtere inngangshendelser på et system. Den kan behandle inngan...
Mus Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kanskje du trenger et verktøy som kan gjøre at musens kontroll endres med hvert program du bruker. Hvis dette er tilfelle, kan du prøve et program som...
Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har nylig lest om Microsoft Sculpt Touch trådløs mus og bestemte meg for å kjøpe den. Etter å ha brukt den en stund bestemte jeg meg for å dele mi...