Automatizzare la creazione di un ambiente virtuale per python

14-04-2020 virtualenv ubuntu debian shell ambiente virtuale

Mi capita spesso di testare qualche nuova libreria, oppure di avviare nuovi progetti o, cosa più comune, di avere progetti in corso che utilizzano versioni differenti di python. Ogni progetto poi ha le sue dipendenze, a volte anche versioni diverse della stessa libreria.

Per evitare conflitti o incompatibilità è buona norma creare degli ambienti virtuali, uno per ogni progetto.

Probabilmente se sei un programmatore python conosci già questa funzionalità e questo articolo non è pensato per spiegarti come funziona un ambiente virtuale. Piuttosto voglio farti vedere come ho automatizzato il processo di creazione di un ambiente virtuale. Se però sei interessato a capire meglio come funzionano e a che servono gli ambienti virtuali scrivimi nei commenti, potrei dedicarci un altro articolo più dettagliato.

Premetto che non è tutta farina del mio sacco, praticamente mi personalizzato questo gist che ho trovato qualche tempo fa.

Per convenzione mia, tutti gli ambienti virtuali che creo li chiamo myvenv. Il comando che utilizzo per creare un ambiente virtuale è:

python3 -m virtualenv -p python3 myvenv

Non è un comando lunghissimo ma ammetto di non avere una memoria di ferro, poi può capitare a tutti un attimo di tentennamento, quindi quando avevo un vuoto le mie alternative erano:

  • cercare su Google come si crea un ambiente virtuale
  • digitare da terminale: history | grep "myvenv"

In entrambi i casi era una situazione frustrante, troppi passaggi per fare una cosa troppo semplice, l’unica soluzione era automatizzare questa fase. Quindi ho Googlato un pò ed ho trovato il gist che ti ho linkato prima.

Ti faccio vedere come l'ho personalizzato:

Come funziona?

In pratica si vanno a creare 2 alias, uno per creare un ambiente virtiale: mkenv ed uno per attivare un virtualenv presente in una directory: activatenv.

Ti faccio un esempio, sono nella home e dopo aver creato gli alias digito:

antonio@xps14:~$ activatenv
No Virtualenv in the current folder

come puoi vedere, se non trova nessun ambiente virtuale nella directory selezionata, restituisce errore.

Creiamo il nostro ambiente virtuale:

antonio@xps14:~$ mkenv
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/antonio/myvenv/bin/python3
Also creating executable in /home/antonio/myvenv/bin/python
Installing setuptools, pip, wheel...
done.
(myvenv) antonio@xps14:~$

dall’output si capisce che: innanzitutto ti crea il virtualenv, poi lo attiva automaticamente, nota il (myvenv) all’inizio della riga della console, che è proprio il nome del virtualenv che ha appena creato.

Se provo a creare un ambiente virtuale in una directory in cui già ne esiste uno, ti avvisa con un messaggio e ti attiva il virtualenv già presente:

antonio@xps14:~$ mkenv
Already exists
(myvenv) antonio@xps14:~$ 

Infine, se in una directory già esiste un ambiente virtuale, per attivarlo ti basta digitare:

antonio@xps14:~$ activatenv
(myvenv) antonio@xps14:~$ 

Questo articolo è un pò diverso dai soliti, voglio lanciare questa nuova serie in cui descrivo alcuni strumenti o tecniche che utilizzo per velocizzare e ottimizzare il mio lavoro.

Utilizzi anche tu gli ambienti virtuali nei tuoi progetti python? Ti piace questa nuova rubrica?

Dimmi la tua nei commenti :)

AP

Autore

Antonio Porcelli

Antonio Porcelli

@progressify


Se non visualizzi il blocco dei commenti è perchè non hai accettato i cookies.
Cancella le preferenze del tuo browser per questo sito, aggiorna la pagina ed accetta i cookies.