In questo post vediamo una serie di operazioni fondamentali che una volta eseguite ci consentiranno di gestire in modo ordinato e pulito ogni progetto di machine learning: ecco l’isolated environment.
Sicuramente una buona abitudine, nonché spettabile skill da possedere nel nostro curriculum come data scientist.
Prima di procedere, è necessario che abbia seguito la precedente guida e installato correttamente la distribuzione anaconda che include python
Da qui in poi, ogni comando sarà impartito su Windows PowerShell
(non useremo anaconda prompt perché il comando conda è lento e non sempre funziona a dovere)
Perché avere un isolated environment
Un ambiente isolato è banalmente una cartella in cui l’installazione di pacchetti software è indipendente da quella di tutte le altre; e inoltre facilmente riproducibile, assicurando così la massima condivisione.
In questo modo è possibile lavorare a differenti progetti senza avere conflitti con le versioni delle librerire. In più l’agevolezza con cui poter condividere il codice fa di noi dei data scientist collaborativi. Una qualità che non deve essere sottovalutata.
Avremo:
- la cartella A con i pacchetti 1, 2 (v.1.2.4), 3
- la cartella B con i pacchetti 1, 2 (v.1.1.0), 4.
Pacchetti differenti, o simili con versioni diverse.
Riepilogo vantaggi
Abbiamo enumerato una serie di vantaggi nella creazione di un isolated environment. Li ho riassunti qui per te:
- iniziare ogni progetto in un ambiente pulito, gestito e ordinato
- facile riproduzione dell’ambiente di sviluppo in caso di condivisione del progetto (utile per correzione bug, e revisione)
- facile riproduzione dell’ambiente in caso di passaggio da sviluppo locale al cloud.
- riduzione del rischio di conflitto tra librerie
Piccolo case study
Qualche tempo fa mi ero cimentai nell’installazione di Tensorflow GPU, una potente libreria che presto useremo nei nostri progetti.
Provai svariate volte ma ottenni sempre lo stesso errore.
Poi scoprii che Tensorflow non era allora compatibile con la versione di python installata sul mio computer (v3.7). Avevo bisogno della v3.5. (lampa te caso di libreria version-dependent)
Come avrei fatto ad installare due versioni di python sullo stesso computer? Mi bastò configurare un isolated environment con quella versione e finalmente riuscii nell’impresa.

Come creare un isolated environment
Avviamo Windows PowerShell, creiamo la nostra cartella e spostiamoci al suo interno:
mkdir ds-bigmart
cd ds-bigmart
Ora installiamo virtualenv digitando:
pip install virtualenv
Attenzione: “pip not found”
Se, e solo se, dovessi incorrere in un errore anagolo e comunque riconducibile alla mancanza del comando pip (Python Install Package), digita sempre da shell:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
Attenzione: “python not found”
Se, e solo se, dovessi incorrere in un errore anagolo e comunque riconducibile alla presunta assenza di python (anche dopo aver installato Anaconda) avvia Anaconda Prompt e digita:
where python
Ora copia l’output e aggiungilo alla variabile d’ambiente PATH. Esegui nuovamente lo script get-pip.py, e aggiungi alla varibaile path anche la posizione dello script pip se necessario.
Ora, anche il percorso dello script di virtualenv potrebbe non essere inserito nelle variabili d’ambiente. Nel mio caso ho dovuto aggiungere il percorso di installazione alla variabile Path. Ricordati di riavviare la shell in caso di cambiamenti alle varaibili d’ambiente.
Con virtualenv pronto non ci resta che installare source:
pip install source
Potrebbe esserti necessario aggiungere anche la cartella di questo script alle variabili d’ambiente. Per me lo è stato.
Riavviato nuovamente la PowerShell, mi sposto all’interno della cartella ds-bigmart e digito:
virtuelenv env
Una cartella /env sarà creata all’interno della cartella.
Ora definiamo un filte requirements.txt contenente le librerie necessarie al nostro progetto:

Salviamo il file e digitiamo:
env/Scripts/activate
Da questo momento in poi ogni nuova installazione sarà compartimentata a questo specifico ambiente.
Nel mio caso l’esecuzione di script all’interno della Shell era disabilitata e peraltro non compariva alcun errore. Solo in seguito è salito un warning:
PSSecurityException
Per risolvere il problema ho avviato la PowerShell come amministratore, e dato il comando:
set-executionpolicy remotesigned
Per il momento è tutto.
Un caldo abbraccio, Andrea.