Ecco una guida sciué sciué per imparare a creare e utilizzare ambienti virtuali su Python! 🐍
Per farlo utilizzeremo il potentissimo venv. 💪
Ti riepilogo subito i tre comandi essenziali per creare, attivare e disattivare l’environment:
1. crea > python -m venv nome-del-venv
2. attiva > Linux: source nome-del-venv/bin/activate
Windows: nome-del-venv\Scripts\activate.bat
3. disattiva > deactivate
Non ti occorrerà niente di più per iniziare. 😉
Continua a leggere qui sotto, però, per capire meglio il funzionamento di uno dei tool più utilizzati dai pythonisti di tutto il mondo.👇
1. Cosa è virtualenv
2. Creare e attivare il virtual environment per Pyhton
3. Disattivare l’ambiente virtuale
4. Salvataggio delle dipendenze per altre installazioni
Cosa è un Virtual Environments
venv
è uno strumento che serve a isolare e gestire ambienti di sviluppo in Python.
Dalla versione di Python 3.3 è un modulo integrato direttamente nelle librerie di sistema.
Con i Virtual Environments puoi creare diversi ambienti virtuali distinti con relative dipendenze e pacchetti PyPI di terze parti.
Tutto questo, compresa l’esatta versione Python che utilizzi, finisce sotto una directory di ambiente (il cui percorso è personalizzabile).
I vantaggi sono facilmente comprensibili:
- qualsiasi applicazione A, che richiede un modulo Pippo versione 1.0, non andrà in conflitto con l’installazione a sistema dell’applicazione B, che richiede il modulo Pippo alla versione 0.8. Questo perché ogni applicazione avrà il suo Virtual Environments.
- le operazioni di aggiornamento dei moduli saranno limitate all’ambienta virtuale specifico e non andranno a impattare su tutti gli altri applicativi Python presenti a sistema.
Creare e attivare il virtual environment per Python
Procediamo quindi alla creazione del virtual environment, la nostra “sandbox” Python.
Crea un cartella nella quale inserirai tutto il tuo progetto, spostati su di essa, e lancia il comando:
python -m venv venv
Pochi secondi e il sistema raccoglierà tutto ciò di cui a bisogno proprio sotto la directory venv.
venv sta ovviamente per “virtual environment”, ambiente virtuale.
Note bene: non sei obbligato a utilizzare questo nome.
Convenzionalmente si tende a chiamare la cartella env o venv, ma non è assolutamente un obbligo.
Considera, insomma, di sostituire il nome del secondo venv, nel comando di creazione, con qualsiasi altra parola a tuo piacimento.
Prova a curiosare sotto la directory appena creata dal comando.
Ti renderai subito conto che lì sotto ci sono finiti un bel po’ di file di sistema, compreso l’interprete di Python. 😉
Non resta ora che attivare l’ambiente per fare in modo che possa essere utilizzato.
Facilissimo, se sei su Linux lancia il comando:
source venv/bin/activate/
Se sei su Windows uno di questi due (il primo se sei sotto la command shell, il secondo se sei sotto la Power Shell):
venv\Scripts\activate.bat
.\venv\Scripts\Activate.ps1
et voilà, sei pronto a sviluppare nel tuo confortevole ambiente isolato:
Ciò che è indicato tra parentesi a terminale, prima del nome utente e hostname, sta proprio a dire che l’ambiente virtuale è attivo e in esecuzione.
Ora puoi installare tutti i moduli di cui hai bisogno proprio tramite PyPI:
Finché l’ambiente è attivo i moduli PyPI non saranno installati nella cartelle di sistema, ma sotto env.
⚠️ Quando utilizzi pip ricorda comunque che non è mai una buona idea utilizzare i permessi di amministratore! ⚠️
Disattivare l’ambiente virtuale
Per uscire dall’ambiente virtuale e tornare a quello di sistema il comando è banale:
deactivate
La shell ti indicherà immediatamente della disattivazione dell’ambiente rimuovendo l’indicazione (env)
:
Salvataggio delle dipendenze per altre installazioni
Sai a cosa serve il comando
pip freeze > requirements.txt
?
Genere un output con un riepilogo di tutte le dipendenze installate a sistema (compresa la loro versione) e lo scrive su un file di testo.
Nel caso dell’ambiente virtuale attivo andrà, ovviamente, a elencare le sole dipendenze installate sull’ambiente stesso:
La cosa può essere parecchio comoda quando ti trovi a dover spostare il progetto di una applicazione da una macchina all’altra.
O quando lo devi distribuire, per esempio su Github.
Se ci fai caso su Github quasi tutte le app scritte in Python sono accompagnate da un file chiamato requirements.txt
.
È il file che elenca tutte le dipendenze necessarie al funzionamento di quell’applicazione.
Quindi, ripetendo, se sei sul tuo virtual environment e vuoi esportare in un file di testo tutte le dipendenze pip installate dai il comando:
pip freeze > requirements.txt
In questo modo salverai, questa volta sul file requirements.txt
, lo stesso contenuto del primo output che ti ho illustrato.
Ora ti basta spostare il file di testo appena creato su un nuovo ambiente virtuale.
Per installare i medesimi pacchetti dell’ambiente di provenienza su un nuovo env il comando è semplice:
pip install -r requirements.txt
Come già detto il comando freeze
si occuperà di esportare anche le versioni di ogni singola dipendenza.
Puoi dormire sogni tranquilli, quindi.
Ora sai come replicare in modo perfetto e veloce i tuoi ambienti virtuali, e non imbatterti mai in problemi di compatibilità.
L’immagine di apertura dell’articolo è di Mitch Fournier.
Ultimo aggiornamento: luglio 2024.