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.
Sono amante della tecnologia e delle tante sfumature del mondo IT, ho partecipato, sin dai primi anni di università ad importanti progetti in ambito Internet proseguendo, negli anni, allo startup, sviluppo e direzione di diverse aziende; Nei primi anni di carriera ho lavorato come consulente nel mondo dell’IT italiano, partecipando attivamente a progetti nazionali ed internazionali per realtà quali Ericsson, Telecom, Tin.it, Accenture, Tiscali, CNR. Dal 2010 mi occupo di startup mediante una delle mie società techintouch S.r.l che grazie alla collaborazione con la Digital Magics SpA, di cui sono Partner la Campania, mi occupo di supportare ed accelerare aziende del territorio .
Attualmente ricopro le cariche di :
– CTO MareGroup
– CTO Innoida
– Co-CEO in Techintouch s.r.l.
– Board member in StepFund GP SA
Manager ed imprenditore dal 2000 sono stato,
CEO e founder di Eclettica S.r.l. , Società specializzata in sviluppo software e System Integration
Partner per la Campania di Digital Magics S.p.A.
CTO e co-founder di Nexsoft S.p.A, società specializzata nella Consulenza di Servizi in ambito Informatico e sviluppo di soluzioni di System Integration, CTO della ITsys S.r.l. Società specializzata nella gestione di sistemi IT per la quale ho partecipato attivamente alla fase di startup.
Sognatore da sempre, curioso di novità ed alla ricerca di “nuovi mondi da esplorare“.
Comments