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.