python -m venv în Python

Creează un mediu virtual: un folder cu propriul Python și propriile pachete, separat de restul sistemului.

Sintaxă
python3 -m venv .venv
source .venv/bin/activate      # Linux, macOS
.venv\Scripts\activate         # Windows
deactivate

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 pip cu 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 venv dă eroare că lipsește ensurepip. Instalează pachetul de sistem python3-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.