Contenuti




Python: Guida ai virtual environment con venv e Poetry

Isola le dipendenze dei tuoi progetti e gestisci ambienti riproducibili


Python: Guida ai virtual environment con venv e Poetry

I virtual environment permettono di isolare dipendenze e versioni di pacchetti per ogni progetto. Questo evita conflitti tra applicazioni diverse e rende i setup riproducibili su macchine diverse.

In questo articolo
  • Cos’e un virtual environment e perche usarlo
  • venv: creazione, attivazione e gestione dipendenze
  • Poetry: workflow moderno con pyproject.toml
  • Consigli pratici per Windows, macOS e Linux

Cos’e un virtual environment

Un virtual environment e un ambiente Python isolato che contiene:

  • un interprete Python dedicato al progetto
  • librerie installate solo per quel progetto
  • configurazioni separate dal Python di sistema

In pratica, ogni progetto ha il suo set di dipendenze, senza interferenze con altri. Questo e utile quando:

  • lavori su progetti con librerie incompatibili tra loro
  • devi replicare un ambiente su server o CI/CD
  • vuoi evitare di “sporcare” il Python di sistema

Vantaggi principali

  • Isolamento: ogni progetto ha librerie e versioni dedicate
  • Riproducibilita: puoi ricreare l’ambiente in modo consistente
  • Manutenzione: aggiornare un progetto non rompe gli altri

Svantaggi principali

  • Gestione aggiuntiva: serve attivare/disattivare l’ambiente
  • Duplicazione: le stesse librerie possono essere installate piu volte

Confronto rapido: venv vs Poetry

Aspetto venv Poetry
Setup semplice, integrato richiede tool esterno
Dipendenze requirements.txt manuale lock file automatico
Risoluzione nessuna risoluzione avanzata risoluzione automatica
Workflow minimale completo e strutturato
Team ok per progetti piccoli ideale per team e CI

venv: soluzione standard di Python

venv e il modulo integrato per creare virtual environment. E semplice e non richiede tool esterni. Usa pip e requirements.txt come base per la gestione dipendenze.

Creazione e attivazione

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Crea l'ambiente nella cartella .venv
python -m venv .venv

# Attiva su Linux/macOS
source .venv/bin/activate

# Attiva su Windows (PowerShell)
.venv\\Scripts\\Activate.ps1

# Attiva su Windows (cmd)
.venv\\Scripts\\activate.bat

Quando l’ambiente e attivo, il prompt mostra il nome dell’ambiente e python punta a quello locale. Per verificare:

1
2
which python  # Linux/macOS
where python  # Windows

Workflow tipico con venv

1
2
3
4
5
6
python -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install requests rich
pip freeze > requirements.txt
deactivate

Vantaggi di venv

  • Standard: e integrato in Python, nessuna dipendenza esterna
  • Leggero: pochi comandi e zero configurazione
  • Compatibile: funziona ovunque esista Python

Svantaggi di venv

  • Lock file: requirements.txt non blocca versioni transitive
  • Risoluzione dipendenze: pip non gestisce conflitti in modo avanzato
  • Workflow manuale: serve disciplina per mantenere i file coerenti

Installazione dipendenze

1
2
pip install requests rich
pip freeze > requirements.txt

Per ripristinare:

1
pip install -r requirements.txt

Disattivazione

1
deactivate

Poetry: gestione moderna dei progetti

Poetry gestisce dipendenze, lock file e virtual env in modo automatizzato usando pyproject.toml. E pensato per progetti strutturati e team.

Installazione Poetry

Opzione consigliata con pipx:

1
pipx install poetry

In alternativa: documentazione ufficiale Poetry

Creazione progetto e ambiente

1
2
poetry init
poetry install

Se preferisci creare da zero:

1
poetry new nome_progetto

Aggiungere dipendenze

1
poetry add requests rich

Eseguire comandi nel venv

1
poetry run python main.py

Entrare nel venv

1
poetry shell

Vantaggi di Poetry

  • Lock file: poetry.lock blocca versioni dirette e transitive
  • Risoluzione: gestisce conflitti in modo automatico
  • Workflow unico: install, add, update, build, publish
  • Progetti team: ottimo per CI e ambienti condivisi

Svantaggi di Poetry

  • Tool esterno: va installato e aggiornato
  • Curva di apprendimento: comandi diversi da pip
  • Compatibilita: alcuni team preferiscono solo pip + requirements

Consigli pratici

  • Usa .venv nel progetto per rendere chiaro l’ambiente attivo.
  • Aggiungi .venv/ al .gitignore.
  • In team, preferisci Poetry per lock file riproducibili.
  • Se usi requirements.txt, salva anche le versioni (pip freeze).
  • Per progetti pubblici, aggiungi una breve sezione su come avviare l’ambiente.

Come scegliere

  • Progetto singolo o didattico: venv e sufficiente e rapido da avviare.
  • Team o CI/CD: Poetry riduce sorprese grazie al lock file.
  • Dipendenze complesse: Poetry aiuta con risoluzione e versioni coerenti.
  • Standard aziendale: se il team usa pip e requirements.txt, resta su venv.

Conclusioni

venv e perfetto per progetti semplici o didattici, mentre Poetry offre un workflow piu completo per progetti strutturati. In entrambi i casi, usare un virtual environment e una buona pratica fondamentale.