Virtual Environments: una guida sciué sciué per gestire ambienti di sviluppo dedicati su Python

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:

VIRTUALENV CHEATSHEET

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

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:

attivazione dell'ambiente virtuale

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:

installazione di moduli con pip

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

uscita e disattivazione dell'ambiente dedicato virtualenv

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:

output del comando pip freeze

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.

Summary
Guida veloce a virtualenv per gestire ambienti virtuali isolati su Python
Article Name
Guida veloce a virtualenv per gestire ambienti virtuali isolati su Python
Description
Una guida facile per creare, utilizzare ed esportare ambienti virtuali su Python con il tool virtualenv.
Author
Pubblicato in Linux, Python.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *