Ce face python -m venv
Un mediu virtual este un folder (de obicei .venv) care conține o copie a interpretorului Python și un loc separat pentru pachete. Ce instalezi cu pip cât timp mediul este activ ajunge doar acolo, nu în Python-ul sistemului și nu în alte proiecte.
python3 -m venv .venv creează mediul. Îl activezi cu source .venv/bin/activate pe Linux și macOS sau cu .venv\Scripts\activate pe Windows; promptul terminalului începe atunci cu (.venv), iar python și pip sunt cele din mediu. deactivate te întoarce la Python-ul obișnuit.
Fiecare proiect are de obicei mediul lui. Folderul .venv nu se pune în Git: pachetele se notează în requirements.txt sau pyproject.toml, iar mediul se recreează oricând. Modulul venv poate fi folosit și din cod, cu venv.create().
Parametri
| Parametru | Descriere |
|---|---|
director |
Folderul în care se creează mediul, de obicei .venv. |
--clear |
Șterge conținutul unui mediu existent și îl creează din nou. |
--upgrade-deps |
Actualizează pip în mediul nou, la ultima versiune. |
--without-pip |
Creează mediul fără pip. |
--system-site-packages |
Mediul vede și pachetele instalate în Python-ul sistemului. |
--prompt |
Textul afișat în prompt când mediul este activ (implicit, numele folderului). |
Ce returnează
Comanda creează folderul mediului; nu afișează nimic dacă reușește.
Exemple
Exemplul 1: Crearea și activarea unui mediu (Linux, macOS)
După activare, which python arată interpretorul din .venv. După deactivate, din nou cel al sistemului.
cd proiect-note
python3 -m venv .venv
source .venv/bin/activate
which python
python -m pip install requests
deactivate
which python3
Ieșire în terminal
/home/ana/proiect-note/.venv/bin/python
Collecting requests
Downloading requests-2.34.2-py3-none-any.whl.metadata (4.8 kB)
...
Successfully installed certifi-2026.10.23 charset_normalizer-3.5.2 idna-3.20 requests-2.34.2 urllib3-2.8.0
/usr/bin/python3
Exemplul 2: Crearea unui mediu din cod, cu venv.create()
Programul creează mediul mediu fără pip (e mai rapid) și pornește Python-ul din el. În mediu, sys.prefix diferă de sys.base_prefix: așa știe un program dacă rulează într-un mediu virtual.
import subprocess
import sys
import venv
from pathlib import Path
venv.create("mediu", with_pip=False)
folder = "Scripts" if sys.platform == "win32" else "bin"
python_din_mediu = Path("mediu") / folder / "python"
print("Există interpretorul:", python_din_mediu.exists())
cfg = Path("mediu/pyvenv.cfg").read_text(encoding="utf-8")
print([rand for rand in cfg.splitlines() if rand.startswith("include-system")])
rezultat = subprocess.run(
[python_din_mediu, "-c", "import sys; print(sys.prefix != sys.base_prefix)"],
capture_output=True, text=True,
)
print("În mediu virtual:", rezultat.stdout.strip())
print("Programul acesta e în mediu virtual:", sys.prefix != sys.base_prefix)
Rezultat
Există interpretorul: True
['include-system-site-packages = false']
În mediu virtual: True
Programul acesta e în mediu virtual: False
Greșeli frecvente
- Instalezi pachete fără să activezi mediul și ele ajung în Python-ul sistemului. Verifică promptul
(.venv)sau ruleazăpython -m pipcu Python-ul din mediu. - Pui folderul
.venvîn Git. Adaugă-l în.gitignoreși păstrează doar lista de pachete. - Muți sau redenumești folderul proiectului, iar mediul nu mai merge: căile sunt scrise în fișierele lui. Șterge
.venvși creează-l din nou. - Pe Debian sau Ubuntu,
python3 -m venvdă eroare că lipseșteensurepip. Instalează pachetul de sistempython3-venv.
Comenzi înrudite
pip install: Instalează pachete Python de pe PyPI, cu o versiune anume sau la ultima versiune, împreună cu dependențele lor.requirements.txt: Fișierul text cu pachetele de care are nevoie un proiect, câte unul pe rând, instalat cu pip install -r.uv init: Creează un proiect Python nou cu uv: pyproject.toml, .python-version, README și un depozit Git.uv sync și uv.lock: Aduce mediul .venv exact la versiunile din uv.lock: instalează ce lipsește și șterge ce nu mai e în proiect.