Beetaversioon: sisu on enamasti terviklik ja avalikuks katsetamiseks valmis, kuid vajab veel tehnilist, keelelist ja kasutatavuse kontrolli.

Peatüki vaade

Linux/Unix/macOS käsurea kiirõpik

Praegu loed peatükki Pythoni venv ja eraldatud keskkonnad, mis kuulub osasse Osa V: Arendus ja töövood.

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 venv või ensurepip puudub: Linuxi jaotus võib vajada eraldi python3-venv paketti. 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/python ja võrdle selle teed terminali omaga.
  • Pakett vajab süsteemiteeki: venv ei 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

  1. Kontrolli Pythoni täisteed enne aktiveerimist ja pärast seda.
  2. Paigalda katsepakett ning tõesta impordiga, et kasutad õiget keskkonda.
  3. Lõpeta aktiveerimine. Kas saad sama paketti kasutada käsuga .venv/bin/python?
  4. Miks jagatakse requirements.txt, mitte kogu .venv kataloogi?

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 keskkond
  • source .venv/bin/activateaktiveeri shellis
  • python -m pip install -U pipuuenda pip
  • python -m pip install requestspaigalda pakett
  • python -m pip listvaata pakke
  • command -v pythonkontrolli tõlgendit
  • deactivatevälju keskkonnast

Olulised märgid

  • (.venv)aktiivne keskkond
  • .venv/projekti sees
  • python -m pipkindlam kui pip
  • Dockerterve keskkond