Pythoni venv ja eraldatud keskkonnad
venv hoiab projekti Pythoni paketid teistest projektidest eraldi. Kui üks projekt vajab paketi üht ja teine teist versiooni, ei pea need sama paigaldust jagama. Tavaliselt on igal projektil oma .venv kataloog.
Loo ja aktiveeri
Vaja on töötavat python3 käsku. python3 -m venv käivitab selle Pythoni mooduli venv; viimane argument on loodava keskkonna kataloog.
mkdir -p ~/tmp/python-naide
cd ~/tmp/python-naide
python3 -m venv .venv
source .venv/bin/activate
Loomine on tavaliselt vaikne. Aktiveerimine muudab praeguse shelli PATH-i, nii et python viitab nüüd projekti keskkonnale. Viipa võib ilmuda (.venv), kuid kontrolli tegelikku tõlgendajat:
python -c 'import sys; print(sys.executable)'
python -m pip --version
-c käivitab jutumärkides antud Pythoni koodi. Mõlemas väljundis peaks tee viitama projekti .venv-ile. See ei muuda teise avatud terminali ega IDE tõlgendajat automaatselt.
Paigalda ja katseta paketti
python -m pip kasutab just selle Pythoni paketihaldurit. Järgmine käsk laeb paketi ja selle sõltuvused internetist:
python -m pip install requests
python -c 'import requests; print(requests.__version__)'
Teine käsk kinnitab, et pakett on imporditav, ja näitab versiooni. python -m pip list kuvab paigaldatud paketid. Ära kasuta virtuaalkeskkonnas sudo pip-i.
Salvesta sõltuvused, mitte keskkonnakataloog
pip freeze väljastab paigaldatud pakettide versioonid. Uues katseprojektis saad need salvestada:
python -m pip freeze > requirements.txt
cat requirements.txt
> kirjutab faili üle: olemasolevas projektis ära asenda sõltuvusfaili enne selle otstarbe kontrollimist. freeze sisaldab ka kaudseid sõltuvusi; see pole garantii, et keskkond töötab muutmata igas operatsioonisüsteemis või iga Pythoni versiooniga.
Teine inimene loob oma .venv ja paigaldab paketid kujul python -m pip install -r requirements.txt. -r tähendab, et paketinimed loetakse failist. Giti läheb sõltuvusfail, mitte .venv/; ära eelda, et keskkonnakataloogi kopeerimine teise masinasse töötab.
Väljumine ja järgmine tööpäev
deactivate taastab shelli varasema keskkonna. See ei kustuta pakette ega projekti. Järgmisel korral liigu projekti ja aktiveeri olemasolev keskkond; uut venv-i ei ole iga kord vaja luua.
Aktiveerimine pole kohustuslik: .venv/bin/python skript.py valib sama tõlgendaja otse. See on kasulik ajastatud töödes ja IDE seadistuses.
Piirid ja levinud vead
No module named venvvõiensurepippuudub: Linuxi jaotus võib vajada eraldipython3-venvpaketti. Vaata oma paketihaldust, mitte ära asenda süsteemi Pythonit juhuslikult.externally-managed-environment: paigaldad tõenäoliselt süsteemi Pythonisse. Loo või vali virtuaalkeskkond; ära lülita süsteemi kaitset välja.- IDE ei leia paketti: vali IDE-s projekti
.venv/bin/pythonja võrdle selle teed terminali omaga. - Pakett vajab süsteemiteeki:
venvei paigalda uut operatsioonisüsteemi ega isoleeri süsteemiteeke. Selline sõltuvus võib vajada paketihaldurit või Dockerit. - Võõras kood: virtuaalkeskkond ei ole turvaliivakast. Programm saab endiselt lugeda sinu faile ja kasutada võrku sinu õigustega.
Minitest
- Kontrolli Pythoni täisteed enne aktiveerimist ja pärast seda.
- Paigalda katsepakett ning tõesta impordiga, et kasutad õiget keskkonda.
- Lõpeta aktiveerimine. Kas saad sama paketti kasutada käsuga
.venv/bin/python? - Miks jagatakse
requirements.txt, mitte kogu.venvkataloogi?
Lisalugemine
Pythoni venv-juhend ja pakettide paigaldamise juhend selgitavad loomist, aktiveerimist ja piiranguid.
Peatüki täisspikker
Edasijõudnu
Eesmärk
venv hoiab ühe projekti Pythoni paketid eraldi; kõige olulisem on, et terminal, pip ja IDE näeksid sama keskkonda.
Põhikujud
python3 -m venv .venvloo keskkondsource .venv/bin/activateaktiveeri shellispython -m pip install -U pipuuenda pippython -m pip install requestspaigalda pakettpython -m pip listvaata pakkecommand -v pythonkontrolli tõlgenditdeactivatevälju keskkonnast
Olulised märgid
(.venv)aktiivne keskkond.venv/projekti seespython -m pipkindlam kuipipDockerterve keskkond