Ældre afhængigheder
Ældre pakker kan blive hængende rundt, og din Python-kode bruger dem med glæde. Dette er ikke et problem, hvis dine Python-scripts er beregnet til at køre lokalt og ikke til industrielle formål. Dataforskere, studerende og endda almindelige mennesker, der automatiserer deres daglige opgave, kan bare fortsætte med at bruge de ældre pakker uden meget af et problem.
Problemet begynder, når du sender din kode til produktion. Når du gør det, er chancerne for, at du bare sender dit hoved script og ikke alle pakkeafhængigheder. For eksempel, hvis du har skrevet en mikroservice, der skal sendes som AWS Lambda-funktion, importerer de første par linjer muligvis anmodningsmodul som dette:
importanmodningDen anmodningspakke, der leveres af AWS lambda, adskiller sig fra din ældre, og som et resultat kan programmet gå ned.
Konflikter
Konflikter kan også komme ind i billedet, hvor forskellige projekter bruger forskellige versioner af den samme pakke. Måske har nogle af dine ældre projekter brug for de ældre pip-pakker. Men du har muligvis brug for den nyere pakke til andre projekter. Kører pipinstallation -U
Python virtuelle miljøer
Hvis du bruger en hvilken som helst version af Python over 3.5, kan du bruge et indbygget modul kaldet venv til at skabe det, der kaldes Python Virtual Environments. Hvad dette modul gør er at oprette en isoleret mappe eller mappe, hvor alle dine pip-pakker og andre afhængigheder kan leve. Mappen indeholder også et 'aktiver' script i det. Når du vil bruge et bestemt virtuelt miljø, skal du blot køre dette script, hvorefter kun pakkerne indeholdt i denne mappe er tilgængelige. Hvis du kører pipinstall, installeres pakkerne i denne mappe og ingen andre steder. Når du er færdig med at bruge et miljø, kan du blot 'deaktivere' det, og så er kun de globale pip-pakker tilgængelige for dig.
Hvis du bruger Ubuntu 18.04 og derover behøver du ikke engang at installere pip-pakkehåndtering på tværs af hele dit system. Pip kan kun eksistere i dit virtuelle miljø, hvis du foretrækker det på den måde.
Installation af venv og oprettelse af virtuelle miljøer
Ubuntu 18.04 LTS kommer ud af kassen med Python 3.6.x, men Python venv-modulet er ikke installeret, heller ikke pip. Lad os installere bare venv.
$ apt installer python3-venvDernæst går vi til den mappe, hvori du vil oprette din Virtual Environment-mappe. For mig er det ~ / project1
$ cd ~ / projekt1Opret din venv med følgende kommando, bemærk at my-env bare er navnet på det miljø, du kan navngive det, hvad du vil:
$ python3 -m venv my-envBemærk: Nogle Python3-installationer, som dem, der er tilgængelige i Windows, kalder du Python-tolken ved hjælp af bare python og ikke python3, men det skifter fra system til system. Af hensyn til konsistensen bruger jeg kun python3.
Når kommandoen er afsluttet, vil du bemærke en ny mappe ~ / project1 / my-evn. For at aktivere det virtuelle miljø for my-env skal du:
- Løb,
$ kilde ~ / projekt1 / min-env / bin / aktivere
hvis du bruger Bash.
Der er alternative scripts kaldet aktivere.fisk og aktiver.csh for folk, der bruger henholdsvis fisk og csh-skaller. - På Windows kan scriptet påberåbes ved at køre:
>.\ my-env \ Scripts \ aktiver.flagermus
hvis du bruger kommandoprompt, eller,>.\ my-env \ Scripts \ aktiver.ps1
hvis du bruger PowerShell.
Brug af virtuelle miljøer
Når du først har kørt scriptet med succes, vil du bemærke, at prompten ændres til noget som det, der vises nedenfor, du kan nu installere pakker ved hjælp af pip:
(min-env) $ pip3 installationsanmodninger## Vi kan liste de installerede pakker ved hjælp af kommandoen 'pip freeze'
(min-env) $ pip3 fryser
certifi == 2018.10.15
chardet == 3.0.4
idna == 2.7
pkg-ressourcer == 0.0.0
anmodninger == 2.20.1
urllib3 == 1.24.1
Så længe det virtuelle miljø er aktivt (som angivet af prompten) gemmes alle pakker kun i det virtuelle miljøkatalog (my-env), uanset hvor du er i filsystemet.
For at komme ud af det virtuelle miljø kan du skrive deaktiver i prompt, og du vil vende tilbage til at bruge den systemdækkende installation af Python. Du kan bemærke, at de nye pakker, vi lige har installeret, ikke vises i den globale pipinstallation.
For at slippe af med det virtuelle miljø skal du blot slette den my-env-mappe, der blev oprettet efter kørsel af modulet. Du kan oprette så mange af disse miljøer, som du vil.
Konklusion
Med venv-modulet er virtuelle miljøer nu tilgængelige som en standardfunktion i Python, især hvis du installerer fra Python.org. Tidligere havde vi mange tredjepartsimplementeringer kaldet virtualenv, pyenv osv.
Dette gav anledning til mere og mere oppustet software som Anaconda, især populær blandt dataforskere. Det er godt at endelig have et forenklet værktøj til styring af Python-pakker uden at skulle installere en masse andet ikke-relateret junk. Du kan læse mere om venv her.