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
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:
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
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.