Anaconda
Anaconda è una distribuzione modulare di Python che contiene molte librerie utili per l’analisi di dati e la visualizzazione.
Per poterla utilizzare in laboratorio è necessario lanciare il seguente comando:
eval "$(/opt/anaconda3/bin/conda shell.bash hook)"
e il prompt cambierà, riportando fra parentesi l’ambiente attivo: (base)
.
Anaconda prende la priorità sui pacchetti di sistema, creando incompatibilità
con alcune applicazioni; per questo motivo è sconsigliato aggiungere il
comando precedente nel file .bashrc
(o simili), ma conviene lanciare il
comando solo nei terminali in cui si vorrà utilizzare Anaconda.
Dopo aver lanciato il comando è possibile lanciare i tool di Anaconda. Ad esempio:
jupyter-notebook
Per avere un overview, con tutorial e video a disposizione, è possibile lanciare:
anaconda-navigator
Ambienti
Oltre all’ambiente di base, alcuni ambienti potrebbero già essere installati sulle macchine del laboratorio. È possibile avere l’elenco completo lanciando:
conda env list
Ad esempio sulle macchine del laboratorio dovrebbe già essere disponibile un
ambiente tensorflow
, con Tensorflow, TensorBoard, PyTorch, Keras,
Scikit-Learn, Scipy.
Per utilizzarlo, dopo aver attivato Anaconda si può lanciare il seguente comando:
conda activate tensorflow
Ambienti personalizzati
A volte gli ambienti predefiniti non contengono tutto quello che è necessario, oppure servono delle versioni diverse di alcune librerie.
In questi casi è possibile creare un’ambiente personalizzato.
Nota: attenzione però perché si occupa molto spazio disco nella propria area, e quindi bisogna fare attenzione a non finire fuori quota.
Vedi pagina relativa alla quota disco per maggiori informazioni sui meccanismi di quota disco.
Supponiamo di voler creare un nuovo ambiente con tensorflow
e scikit-learn
:
conda create -n mytensorflow tensorflow scikit-learn
Come prima, per attivarlo posso lanciare:
conda activate mytensorflow
Se mi accorgo che mi servono altri pacchetti, posso aggiungerli anche in seguito. Ad esempio:
conda activate mytensorflow
conda install keras
Se poi decido di rimuovere l’ambiente, perché non mi serve più:
conda deactivate
conda env remove -n mytensorflow
Nota: questo non rimuoverà i pacchetti da ~/.conda/pkgs
, e quindi non libererà
molto spazio disco.
Se non si lavora più con gli ambienti personalizzati di Anaconda,
e si vuole liberare tutto lo spazio, si può rimuovere tutta la
directory ~/.conda
dalla propria home directory.
Ambienti personalizzati in un notebook Jupyter
Per poter utilizzare un ambiente personalizzato in un notebook Jupyter, è necessario aggiungere il kernel per Jupyter all’interno dell’ambiente.
Supponendo ad esempio che il mio ambiente personalizzato si chiami
data-analysis
, il comando che devo lanciare è:
ipython kernel install --user --name=data-analysis
A questo punto, rilanciando eventualmente jupyter-notebook
, potrò
scegliere il kernel personalizzato dall’interfaccia del notebook
(direttamente nel menù New
, se sto creando un nuovo notebook, o
da Kernel
> Change kernel
se ho già aperto il notebook).
Esempio avanzato
Se serve una versione particolare di Python, ad esempio per utilizzare opencv
,
è possibile specificarla quando si crea l’ambiente. Ad esempio:
conda create -n myopencv tensorflow scikit-learn opencv python=3.7
Incompatibilità
Le librerie Python presenti in Anaconda possono a volte creare dei problemi con altri programmi scritti in Python, che non sono parte di Anaconda.
Per questo motivo si consiglia di non mettere nel .bashrc
il comando
per attivare Anaconda, ma di utilizzarlo solo nel terminale in cui si vuole
usare Anaconda.
Nel caso in cui ci siano problemi con un programma lanciato da un terminale in cui Anaconda è attivo, aprire un nuovo terminale, in cui Anaconda non è attivo, e lanciare il programma da lì.
Cambio di licenza
Nel 2020 la licenza di Anaconda è cambiata. Si può ancora utilizzare Anaconda per la didattica, ma l’utilizzo commerciale prevede l’acquisto di licenze. In linea generale, l’utilizzo in ambito di ricerca può costituire attività commerciale, e quindi in tal caso consigliamo di leggere con attenzione i termini di utilizzo (che potrebbero esser nuovamente cambiati), o di evitarne l’utilizzo.
Link al post che annunciava il cambio di licenza
Al momento la licenza riporta:
For sake of clarity, use by government entities and nonprofit entities with over 200 employees or contractors is considered Organizational Use. Educational Entities will be exempt from the paid license requirement, provided that the use of the Anaconda Offering(s) is solely limited to being used for a curriculum-based course.
e quindi l’utilizzo di Anaconda in ambito di ricerca sembra ricadere nelle attività per cui è necessario il pagamento delle licenze.