Vai al contenuto principale
Strumenti Python2026-07-31 · 9 min di lettura

Ambienti virtuali Python nel 2026: venv, uv, pipx, poetry - Quando usare quale

Ogni tutorial di Python dice "usa un ambiente virtuale" e va avanti. Questo fa il possibile: cos'è realmente un venv, i quattro strumenti che vale la pena conoscere nel 2026, un albero decisionale di 60 secondi per scegliere quello giusto e i due errori che interrompono la configurazione in una settimana.

Cos'è realmente un ambiente virtuale

Un venv è una directory contenente un collegamento simbolico dell'interprete Python più un `site-packages/` privato. Quando è "attivato", PATH antepone <venv>/bin, quindi python e pip nella shell puntano alle copie di venv. pip install X scrive nei site-packages/ di venv, non in quelli del sistema Python.

Questo è tutto. Nessuna magia. È una cartella con un collegamento simbolico e un pyvenv.cfg.

BASH
$ python -m venv .venv $ ls .venv/ bin/ include/ lib/ pyvenv.cfg $ cat .venv/pyvenv.cfg home = /opt/homebrew/opt/python@3.13/bin include-system-site-packages = false version = 3.13.2

Tutto il resto (attivazione di script, wrapper, gestori di pacchetti) è comodità oltre a questa forma.

Perché ne hai bisogno, sempre

Senza un venv, pip install X scrive nel tuo sistema i site-packages/ di Python. Tre problemi:

1. Conflitti. Il progetto A necessita di django==4.2; Il progetto B necessita di django==5.1. Impossibile senza venv.

2. Riproducibilità. "Funziona sulla mia macchina" è un problema di sistema Python. Un'istantanea venv È l'ambiente.

3. Pulizia. Vuoi eliminare un progetto? Elimina la sua cartella venv. Le installazioni di System-Python si accumulano per sempre.

Su macOS 12+ e sulla maggior parte delle distribuzioni Linux, system-Python è ora di proprietà del sistema operativo: pip può persino rifiutarsi di installarsi senza --break-system-packages. Questo è un suggerimento.

I 4 strumenti che vale la pena conoscere

1. venv — la linea di base stdlib

Viene fornito con ogni installazione di Python 3.3+. Zero dipendenze. Il ripiego universale:

BASH
python -m venv .venv # create source .venv/bin/activate # macOS / Linux .venv\Scripts\activate # Windows pip install -r requirements.txt deactivate # or close the shell

Da utilizzare quando: scrivere un tutorial, garantire che uno script funzioni ovunque o in un CI bloccato dove non è possibile installare nulla.

2. uv — l'impostazione predefinita moderna (2026)

Scritto in Rust, 10-100 volte più veloce di pip. Sostituisce venv + pip + pip-tools + pyenv-download-python. Vedi il nostro uv deep-dive per il tour completo.

BASH
uv venv # create venv (uses current Python) uv venv --python 3.13 # or download + pin a version uv pip install -r requirements.txt uv run pytest # run without activating uv add fastapi # append to pyproject.toml + install uv sync # install exactly what pyproject.toml says

Da utilizzare quando: qualsiasi progetto del 2026: solista, team, CI, Docker. La differenza di velocità su una cache fredda è reale (45s pip → 2s uv su un tipico progetto Django).

3. pipx — per gli strumenti CLI

Quando installi una CLI come ruff, httpie, black, youtube-dl, mypy, non la vuoi nel tuo progetto venv (perché dipendere da ruff affinché import project.things funzioni?). E non lo vuoi nel sistema Python (conflitti). pipx inserisce ciascuno nella propria venv isolata ma espone la CLI a livello globale:

BASH
pipx install ruff pipx install httpie pipx install black ruff check . # works from anywhere, no activation httpie GET api.github.com black .

Utilizzare quando: installazione di una CLI basata su Python. Regola pratica: pipx install X se X fornisce un eseguibile che eseguiresti da qualsiasi progetto; "uv pip install X" se X è una libreria da "importare".

Sostituzione moderna: uv tool install ruff fa la stessa cosa senza un'installazione pipx separata. Scegli uno dei due.

4. poesia: blocco della dipendenza maturo (quota in calo)

Prima dell'avvento dell'uv, la "poesia" era lo strumento di packaging moderno di riferimento. Eccellente risolutore di dipendenze, poetry.lock deterministico, stretta integrazione con pyproject.toml. Ancora solido, ma più lento dell'UV e aggiunge un sovraccarico cognitivo.

BASH
poetry new my-project poetry add fastapi poetry install poetry run pytest poetry publish

Utilizzare quando: un progetto esistente utilizza già la poesia o sono necessari plugin specifici per la poesia (ad esempio poetry-plugin-export). Per i NUOVI progetti nel 2026, "uv" ti porta a destinazione più velocemente con un ingombro ridotto.

L'albero decisionale di 60 secondi

▶ PYTHONeditable · runs in your browser

Questo è tutto. Il 90% degli sviluppatori Python oggi può scegliere da questo elenco senza aver bisogno di pyenv, virtualenvwrapper, pew o conda.

Conda — il caso speciale

conda è un universo separato: gestore pacchetti + gestore venv + distributore Python + gestore libreria C, principalmente per Python scientifico. Se stai eseguendo un lavoro numerico pesante con stack numpy / scipy / pandas / GPU che necessitano di versioni CUDA + cuDNN abbinate, miniconda potrebbe comunque valerne la pena: i binari precompilati fanno risparmiare ore rispetto a pip.

Altrimenti: il semplice uv è ora competitivo anche sugli stack scientifici (le installazioni di Numpy/Pandas sono secondi, non minuti). Non cercare conda a meno che tu non abbia specificamente bisogno di un pip di associazione della libreria C che non può essere facilmente prodotto.

I due errori che interrompono il tuo setup in una settimana

1. Inviare .venv/ a git

Un venv contiene:

  • Percorsi assoluti per la tua specifica installazione Python.
  • File .pyc compilati.
  • File binari specifici del sistema operativo.

Impegnati → il tuo compagno di squadra su Windows non può eseguire nulla. Aggiungi PRIMA .venv/ (e venv/, .env/) al tuo .gitignore, quindi crea il file venv.

2. Attivazione nella shell sbagliata

source .venv/bin/activate imposta le variabili env solo nella shell CURRENT. Se apri una nuova scheda del terminale, torni al sistema Python. Due modelli sicuri:

1. Riattiva ogni sessione: il flusso standard.

2. `uv run` / `poetry run` / `python -m project` — non attivare mai. Esegui comandi da una nuova shell con il prefisso dello strumento. Ottimo in Makefile, CI, script npm, hook git.

Regola per gli script: se si tratta di un one-liner eseguito da CI o da un Makefile, NON attivarlo: utilizzare uv run pytest o il percorso completo .venv/bin/pytest. L'attivazione è solo per le shell interattive.

Migrazione tra strumenti

pip + venv → uv:

BASH
rm -rf .venv uv venv uv pip install -r requirements.txt

Requisiti.txt continua a funzionare alla lettera. Due minuti.

poesia → uv:

BASH
uvx migrate-to-uv # community tool, converts pyproject.toml

venv → poesia:

BASH
poetry init poetry add $(pip freeze | cut -d= -f1)

Verifica

Dopo l'installazione, controlla sempre QUALE Python + pip stai utilizzando:

BASH
$ which python /path/to/project/.venv/bin/python # ✅ venv /opt/homebrew/bin/python # ❌ system, activation didn't take $ which pip /path/to/project/.venv/bin/pip # ✅ venv $ python -c "import sys; print(sys.prefix)" /path/to/project/.venv # ✅ venv

Se "quale python" mostra un percorso di sistema dopo l'attivazione, c'è qualcosa che non va: di solito hai attivato in una subshell che è già uscita.


Gli ambienti virtuali sono uno dei pochi argomenti Python in cui la risposta moderna (2026) è veramente più semplice di quella storica. "uv" per i nuovi progetti, "venv" per gli script, "pipx" per le CLI. Fatto.

Passaggio successivo: il percorso Python DevOps copre uv + ruff + Docker + il moderno stack di distribuzione Python, in modo pratico con Python reale in esecuzione nel tuo browser.

Pronto a provarlo?

15 lezioni gratuite previa iscrizione gratuita — nessuna tessera. Prova la piattaforma e poi decidi.

Inizia gratis →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.