Perchè usare un ambiente virtuale per programmare in python
Se state leggendo questo articolo, immagino che vi sia già capitato di lavorare su qualche progetto python e rendervi conto che, per problemi di incompatibilità delle librerie e/o dell’ambiente di sviluppo, l’unica via di soluzione era dover fare un upgrade o un downgrade della stessa o dell’ambiente, consapevoli della criticità dell’operazione e degli impatti su altri progetti. Se vi è successo sappiate che si può ovviare a queste problematiche semplicemente usando Pyenv.
Pyenv permette di gestire diverse release di python installate sullo stesso sistema, in modo da poterle utilizzare selettivamente per sviluppare e testare il proprio progetto.
Con Pyenv infatti è possibile:
- effettuare il passaggio automatico tra la versione di sistema di Python con una versione definita dall’utente per il progetto;
- gestire automaticamente gli ambienti virtuali creati tramite anaconda o virtualenv
- sovrascrivere l’ambiente Python predefinito con uno dinamico;
- ricercare dei comandi delle varie versioni di Python
Dobbiamo tenere presente che quando si installano le librerie Python sul sistema , la versione installata diventa quella predefinita e quindi quella che verrà usata dalle applicazioni che necessitano di tali librerie per funzionare. Per evitare incongruenze di versione Pyenv ha introdotto il concetto degli shims,che sostituiscono / deviano le chiamate verso l’ambiente protetto dove sono configurate le librerie e le dipendenze corrette. Pyenv in sostanza indicherà al sistema quale versione di Python utilizzare di volta in volta, invocando appunto gli shims, a seconda delle indicazioni dell’utente.
Esempio di utilizzo di Pipenv
Vediamo cosa possiamo fare per isolare un nuovo progetto.
Il primo step è di creare un repository ed accedervi via shell:
$ cd myproject
A questo punto sarà necessario lanciare la Pipenv shell:
$ pipenv shell
e scegliere la versione di python da utilizzare per l’ambiente.
Impostare per il progetto una specifica versione di Python
Per creare una virtualenv ed impostare per il progetto selezionato una specifica versione di Python che dovrà, comunque, essere installata nel sistema e correttamente configurata nel PATH, potrete usare i seguenti comandi :
supponiamo di volere impostare Python 3 :
$ pipenv --python 3
o una versione specifica quale Python3.5:
$ pipenv --python 3.5
o Python 2.7.14:
$ pipenv --python 2.7.14
per verificare la versione utilizzata per il progetto, sarà come sempre sufficiente lanciare
$ python --version
Il secondo step sarà quello di aggiungere i pacchetti necessari al progetto utilizzando pipenv in sostituzione del pip di sistema :
$ pipenv install <package>
Questa procedura creerà un Pipfile, se già non esistente, all’interno del vostro progetto e nel caso già esistesse l’operazione andrà a modificare il pipfile con i nuovi pacchetti installati.
Il Pipfile generato dovrebbe avere una forma di questo tipo.
[[source]] url = "https://pypi.python.org/simple" verify_ssl = true [dev-packages] [packages] [requires] python_version = "3.6"
Ogni qualvolta verrà lanciata la pip shell, pipenv automaticamente verificherà la versione corrispondente di python di sistema.

Comments