Un’importante aspetto nella fase d’implementazione di un progetto python è dato dalle librerie che vanno a costituire le dipendenze di progetto. L’incredibile gamma di librerie di ottimo livello esistenti nell’ecosistema python è uno dei principali motivi, se non il principale, per cui sviluppare in questo linguaggio è incredibilmente interessante e semplice.
Spesso, però, si ha la necessità di dovere installare molte librerie come dipendenze di un progetto in particolare; installare ogni dipendenza direttamente sull’ambiente globale python può risultare problematico: alcune librerie potrebbero andare a provocare malfunzionamenti ad altre, che a loro volta potrebbero rendere applicazioni inutilizzabili; altre volte non si ha neanche la possibilità di potere effettuare installazioni globali. Per questo tipo di situazioni, uno strumento utile per ogni sviluppatore è virtualenv.
Virtualenv è uno strumento che permette di creare degli ambienti virtuali di python isolati dal resto del sistema: all’interno di questi ambienti avremo a nostra disposizione la release di python che preferiremo nel suo stato iniziale, con la sola libreria standard disponibile.
Installare questo strumento è semplice, utilizzando pip basterà aprire una finestra di terminale e digitare:
pip3 install virtualenv
Una volta installato, virtualenv può essere utilizzato da terminale con la seguente sintassi:
python3 -m virtualenv nomecartella
In questo modo, verrà creata una cartella con nome nomecartella nella directory corrente, in cui verrà collocato l’ambiente python. Per potere utilizzare l’ambiente appena creato basterà lanciare lo script activate situato in nomecartella/bin/ su sistemi unix-like o in nomecartella/Scripts su Windows; fatto questo si vedrà apparire la scritta (nomeambiente) all’inizio di ogni comando del terminale, per disattivare il tutto basterà usare il comando deactivate. Nel caso in cui ci siano a disposizione diverse versioni di python installate sulla macchina che si sta utilizzando, è possibile scegliere una specifica versione tramite il flag -p:
python3 -m virtualenv -p python3 nomecartella
ad esempio, creerà un’ambiente in cui sarà installato python3.
Integrazione con Visual Studio Code
Come appena visto, lavorare con virtualenv risulta semplice e comodo; il passo successivo consiste nel poterlo utilizzare assieme ad uno dei tanti editor ed IDE oggi disponibili online.
Quello che viene preso in considerazione in questo articolo è Visual Studio Code, un editor testuale Microsoft basato sul loro stesso progetto open source vscode, gratis, altamente personalizzabile e multi-piattaforma. Una delle caratteristiche di cui questo editor è dotato è quella di avere un terminale integrato al suo interno, permettendo di scegliere tra il Prompt classico, la Windows PowerShell o, se si è su piattaforma Windows e lo si ha installato, un terminale WSL, di cui si è già parlato su Antima in questo articolo.
Per potere usare le funzioni di auto-completamento e di controllo di correttezza del codice scritto, bisogna installare l’estensione Python ed impostare un’interprete di Python di default cliccando nell’apposita sezione della finestra principale, in basso a sinistra.
Per far sì che nella lista di interpreti disponibili appaia anche quello legato ad un ambiente virtuale generato con il procedimento sopra riportato, bisognerà fare attenzione a creare ogni ambiente all’interno della cartella .virtualenvs nella directory home del nostro utente, ossia:
- /home/<nomeutente>/.virtualenvs su piattaforme unix-like,
- C:\Users\<nomeutente>\.virtualenvs su Windows),
creandola noi stessi nel caso in cui non esista. Una volta fatto ciò, VS Code saprà identificare automaticamente ogni ambiente creato, che potrà essere integrato all’interno dell’editor e che verrà automaticamente aperto su ogni terminale lanciato.
Nel prossimo articolo della serie si vedrà come utilizzare nel pratico questo tipo di concetti, con un esempio in un ambiente specifico per l’IoT, grazie per la lettura e alla prossima!
Grazie, anche perché hai usato la nostra lingua, che ha davvero bisogno di arricchirsi di vocaboli tecnici come patrimonio di una cultura più moderna.