Python venv Foglio di riferimento rapido
alcune utili command per venv
Venv è uno strumento per la gestione degli ambienti virtuali da riga di comando. Un’alternativa molto più semplice rispetto ad Anaconda. Ecco alcuni comandi utili per venv.

Ti faccio solo sapere che, a mio parere, esiste uno strumento molto migliore per la gestione dei pacchetti e degli ambienti in Python, rispetto a venv - uv. Dai un’occhiata: uv - Nuovo Gestore di Pacchetti, Progetti e Ambienti Python
Foglio di Trucchi per Python venv
Creare un Ambiente Virtuale
-
Comando standard (Python 3.3+):
python -m venv venvQuesto crea un ambiente virtuale chiamato
venvnella tua directory corrente. -
Con una versione specifica di Python (se installata):
python3.10 -m venv venvo utilizzando
virtualenv:virtualenv -p /usr/local/bin/python3.10 venv(Richiede il pacchetto
virtualenv).
Attivare l’ambiente virtuale
- Su Windows:
.\venv\Scripts\activate - Su macOS/Linux:
Ora il prompt della shell dovrebbe mostrare il nome dell’ambiente.source venv/bin/activate
Disattivare l’ambiente virtuale
- Su tutti i piattaforme:
Questo ti riporta al Python del sistema.deactivate
Installare Pacchetti
- Con pip:
Esempio:pip installpip install numpy pandas - Aggiornare pip (consigliato):
python -m pip install --upgrade pip
Congelare e Esportare i Requisiti
- Salvare i pacchetti dell’ambiente corrente:
pip freeze > requirements.txt - Installare da un file dei requisiti:
Assicurati che l’ambiente virtuale sia attivo prima di eseguire questi comandi.pip install -r requirements.txt
Rimuovere un Ambiente Virtuale
deactivate
rm -rf <env path>
Errori Comuni Nella Gestione Degli Ambienti Virtuali Python
Dimenticare di Attivare l’ambiente Virtuale
- Un errore frequente è eseguire comandi senza attivare l’ambiente virtuale previsto, portando all’installazione di pacchetti nell’ambiente globale o nel venv sbagliato. Questo può causare conflitti tra dipendenze e comportamenti imprevedibili.
Non Fissare le Versioni dei Pacchetti
- L’uso di specificatori di versione non precisi (come
>=invece di==) inrequirements.txtcompromette la riproducibilità. Fissare le versioni esatte garantisce che tutti coloro che lavorano al progetto utilizzino le stesse versioni dei pacchetti, prevenendo problemi imprevisti durante il deployment o la collaborazione.
Mescolare Ambiente Globale e Virtuale
- Installare accidentalmente pacchetti globalmente o mescolare ambienti globali e virtuali può creare conflitti, soprattutto se diversi progetti richiedono versioni incompatibili dei pacchetti. Assicurati sempre di operare nell’ambiente corretto.
Includere Ambienti Virtuali nel Controllo delle Versioni
- Includere la directory dell’ambiente virtuale (es.
venv/) nel controllo delle versioni ingrossa i repository e non è necessario. Aggiungi sempre le directory venv a.gitignoreper mantenere il repository pulito.
Non Separare le Dipendenze di Sviluppo e Produzione
- Non distinguere tra dipendenze di sviluppo e produzione può portare a deployment ingombrati o insicuri. Utilizza file dei requisiti separati o sezioni di configurazione per ciascuna.
Mancanza di Documentazione e Automazione
- Non documentare i passaggi per l’installazione dell’ambiente o non automatizzare il processo (con script o Makefile) rende più difficile l’onboarding di nuovi contributori e la riproducibilità degli ambienti.
Non Pulire Regolarmente gli Ambienti Obsoleti
- Con il tempo, gli ambienti virtuali non utilizzati possono accumularsi, sprechi spazio su disco e causare confusione. Rimuovi regolarmente gli ambienti obsoleti per mantenere un workspace ordinato.
Ignorare i Limiti del Python e del Gestore dei Pacchetti del Sistema
- Modificare il Python del sistema o mescolare i gestori dei pacchetti del sistema con pip può danneggiare gli strumenti del sistema e introdurre problemi difficili da diagnosticare. Usa sempre i venv per le dipendenze dei progetti e evita di interferire con i pacchetti gestiti dal sistema.
Tabella Riepilogativa
| Errore Comune | Impatto |
|---|---|
| Dimenticare di attivare venv | Installa i pacchetti nell’ambiente sbagliato |
| Non fissare le versioni dei pacchetti | Costruzioni imprevedibili, bug difficili da riprodurre |
| Mescolare ambiente globale e virtuale | Conflitti tra dipendenze/versioni |
| Includere directory venv nel controllo delle versioni | Repository ingombrate, disordinate |
| Non separare dipendenze di sviluppo e produzione | Deployment ingombrati/insecure |
| Mancanza di documentazione/automazione | Difficile onboarding, configurazioni inconsistenti |
| Non pulire gli ambienti obsoleti | Spreco di spazio su disco, confusione |
| Modificare Python o pacchetti del sistema | Instabilità del sistema, strumenti danneggiati |
Seguire le best practice, come sempre attivare il venv, fissare le dipendenze, separare gli ambienti e mantenere una documentazione chiara, può aiutarti a evitare questi errori comuni.
Principali Differenze Tra Conda e Ambienti Virtuali per la Riproducibilità
| Funzione | Ambienti Conda | Ambienti Virtuali Python (venv/virtualenv) |
|---|---|---|
| Ambito di Gestione | Gestisce i pacchetti Python e dipendenze non-Python (es. librerie di sistema, compilatori) | Gestisce solo i pacchetti Python tramite pip |
| Controllo della Versione di Python | Può specificare e installare qualsiasi versione di Python per ambiente | Utilizza la versione di Python installata nel sistema |
| Consistenza Cross-Platform | Più consistente tra diversi OS (Windows, macOS, Linux) grazie alla gestione di tutte le dipendenze | Dipende dalle librerie del sistema, che possono differire per OS |
| Fonti dei Pacchetti | Utilizza repository Conda (binari precompilati, stack scientifico) | Utilizza PyPI (pip) per i pacchetti Python |
| Riproducibilità | Maggiore per progetti complessi, scientifici o multilingua; puoi esportare l’ambiente completo (conda env export) |
Buona per progetti puramente Python; potrebbe mancare di riproducibilità se sono coinvolti dipendenze del sistema |
| Dipendenze Non-Python | Può installare e gestire (es. OpenBLAS, libpng) | Non può gestire; devono essere installate separatamente |
| Esportazione/Importazione dell’ambiente | conda env export / conda env create per la riproducibilità completa |
pip freeze > requirements.txt / pip install -r requirements.txt (solo pacchetti Python) |
| Prestazioni | Più veloci e affidabili per grandi pacchetti scientifici (es. numpy, pandas) | Potrebbe richiedere la compilazione da sorgente, specialmente su Windows |
| Complessità | Slightly higher setup and management overhead | Leggero, semplice per progetti Python base |
Riepilogo dei Punti Chiave
-
Gli ambienti Conda sono ideali per la riproducibilità in progetti che richiedono sia dipendenze Python che non-Python, o quando è critica la replicazione esatta tra piattaforme. Conda gestisce l’intero stack, incluso Python stesso, le librerie e anche i compilatori, rendendolo più facile condividere e riprodurre ambienti complessi, specialmente in contesti di data science e ricerca.
-
Gli ambienti virtuali Python (
venv/virtualenv) sono leggeri e ottimi per isolare le dipendenze Python in progetti puramente Python. Tuttavia, non gestiscono le dipendenze a livello di sistema o non-Python, quindi la riproducibilità potrebbe essere compromessa se il progetto dipende da librerie esterne o da specifiche configurazioni del sistema. -
Esportare e condividere ambienti: Conda ti permette di esportare una specificazione completa dell’ambiente (
conda env export), inclusi tutti i dipendenze e le loro versioni, che possono essere ricreati esattamente altrove. Con gli ambienti virtuali,pip freezecattura solo i pacchetti Python, non le dipendenze del sistema o la versione dell’interprete Python. -
Conclusione
Utilizza Conda per la massima riproducibilità in progetti scientifici, cross-platform o progetti complessi. Utilizza gli ambienti virtuali Python per progetti leggeri e puramente Python dove le dipendenze a livello di sistema non sono un problema.