Virtualenv: 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 virtualenv. 💪

Ti riepilogo subito i tre comandi essenziali per creare, attivare e disattivare l’environment:

VIRTUALENV CHEATSHEET

1. crea > virtualenv env
2. attiva > source env/bin/activate
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 è virtualenv

virtualenv è uno strumento che serve a isolare e gestire ambienti di sviluppo separati.

Con virtualenv 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 della versione B, che richiede il modulo Pippo alla versione 0.8
  • 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.

Installare virtualenv

La procedura di installazione di virtualenv dipende dalla distribuzione Linux sulla quale lavori.

Su Ubuntu è immediata lanciando il solito
sudo apt install virtualenv

Ricordati di installare anche PyPI, ti servirà per i moduli e pacchetti aggiuntivi.

Per installare virtualenvs su Windows, invece, hai bisogno di installare in primis proprio PyPI.
Questi i passaggi con cui Google risponde alla domanda “come installo Python Virtualenv su Windows?”:

passaggi per l'installazione di Python Virtualenv su Windows
Per installare virtualenv su Windows segui i primi tre passaggi: 1. apri la Power Shell (o la console di comando) con permessi da amministratore 2. lancia il comando pip install virtulenv 3. lancia il comando install virtulenvwrapper-win (ricorda di installare prima PyPI per la gestione dei pacchetti pip!)

A seguire riporterò i comandi di attivazione e gestione del tool su OS Linux.
Se utilizzi un sistema operativo Windows ti consiglio di dare uno sguardo a questo tutorial specifico su Youtube.

Creare e attivare il virtual environment per Python

Procediamo quindi alla creazione della sandbox .

Crea un cartella nella quale inserirai tutto il tuo progetto, spostati su di essa, e lancia il comando:
virtualenv env

Pochi secondi e il sistema raccoglierà tutto ciò di cui a bisogno proprio sotto la directory env.

virtualenv creazione dell'ambiente

env sta ovviamente per “environment”, ambiente.

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, che puoi sostituire env 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, compresa l’installazione di Python. 😉

Non resta ora che attivare l’ambiente per fare in modo che possa essere utilizzato.

Facilissimo, lancia il comando:

source env/bin/activate/

et voilà, sei pronto a sviluppare nel tuo confortevole ambiente isolato:

attivazione dell'ambiente virtuale

l’env tra parentesi a terminale, prima del nome utente e postazione, sta proprio a indicare che l’ambiente env è 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 comandopip freeze?
Genere un output con un riepilogo di tutte le dipendenze installate a sistema.
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 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.

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 il comando è semplicemente:
pip install -r requirements.txt

Come avrai notato 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 *