Blog.

Creare un isolated environment Python | Windows 10


Autore
Andrea Provino
Data
Tempo di lettura
4 minuti
Categoria
Guide

isolated-environemnt-python-machine-learning-data-science-jupyter-notebook-conda

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.


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum