# Anaconda (distribuzione Python)

Anaconda è una distribuzione dei linguaggi di programmazione Python e R progettata specificamente per la scienza dei dati, l'apprendimento automatico e l'intelligenza artificiale che mira a semplificare la gestione e la distribuzione dei pacchetti. È disponibile per Linux, Windows e MacOS ed sviluppata da Anaconda, Inc., fondata da Peter Wang e Travis Oliphant nel 2012. Anaconda offre diverse edizioni per soddisfare le esigenze di vari utenti e organizzazioni. Anaconda Individual Edition è gratuita e include tutte le funzionalità di base per lo sviluppo in Python e R, con accesso a moltissimi pacchetti open source. Esistono poi altre versioni a pagamento che sono: Anaconda Pro (Starter) che aggiunge spazio di archiviazione cloud, corsi di formazione a richiesta, Anaconda Business, progettata per team e organizzazioni offre strumenti di sicurezza e log di audit, Anaconda Enterprise, progettata per grandi organizzazioni offre strumenti avanzati di collaborazione, gestione amministrativa e governance.
I pacchetti, in Anaconda, sono gestiti dal gestore dei pacchetti conda. Conda è stato creato come un pacchetto open source separato in quanto le sue caratteristiche lo rendono estremamente utile non solo per Python, ma anche per altri linguaggi di programmazione. Questo lo rende una scelta versatile per la gestione di pacchetti e ambienti.
Esiste una versione ridotta di Anaconda, chiamata Miniconda, che include esclusivamente Conda, Python e un piccolo numero di altri pacchetti essenziali. È ideale per chi desidera un'installazione più leggera e vuole la flessibilità di installare solo i pacchetti specifici di cui ha bisogno, senza dover scaricare l'intera distribuzione Anaconda.

## Panoramica

Anaconda include, nella sua installazione, oltre 250 pacchetti per il data science, il machine learning e l'analisi dei dati. Tramite il gestore dei pacchetti conda è possibile installare oltre 7.500 pacchetti direttamente da PyPI. Anaconda mette a disposizione anche una GUI (interfaccia grafica utente) chiamata Anaconda Navigator che offre una soluzione alternativa e più user-friendly all'interfaccia a riga di comando per la gestione dei pacchetti.
Tramite conda è anche possibile semplificare la creazione, l'attivazione e la disattivazione di ambienti virtuali con pochi comandi.
La grande differenza tra conda e il gestore di pacchetti pip sta nel modo in cui vengono gestite le dipendenze dei pacchetti. Conda può gestire non solo pacchetti Python, ma anche per altri linguaggi come R e librerie C/C++. Questo lo rende particolarmente utile per progetti di data science, machine learning e sviluppo scientifico
Prima della versione 20.3, pip installava automaticamente tutte le dipendenze dei pacchetti senza verificare eventuali conflitti con i pacchetti già installati. Questo poteva creare problemi significativi quando le versioni delle dipendenze richieste dai pacchetti erano incompatibili tra loro. Ad esempio, se un utente aveva una versione funzionante di TensorFlow, l'installazione di un altro pacchetto che richiedeva una versione diversa di numpy poteva causare il malfunzionamento di TensorFlow.
Questi conflitti non erano immediatamente evidenti, il che significava che i pacchetti potevano sembrare funzionare ma potevano produrre risultati diversi o errati. Questo problema di risoluzione delle dipendenze è stato uno dei motivi per cui il gestore di pacchetti conda è stato considerato più affidabile, soprattutto in passato.
Conda, all'atto dell'installazione di un pacchetto, analizza l'ambiente corrente e tutto ciò che è installato e, insieme a tutte le limitazioni di versione specificate elabora il modo per installare un set di dipendenze compatibile e, in caso si impossibilità, mostra un avviso all'utente.
I pacchetti open source possono essere installati direttamente dal repository di Anaconda, Anaconda Cloud (anaconda.org), o dal proprio repository privato o mirror utente, utilizzando il comando conda install. Anaconda, Inc. compila i pacchetti disponibili nel repository di Anaconda mettendoli a disposizione quali binari per Windows 32/64 bit, Linux 64 bit e macOS 64-bit (Intel, Apple Silicon). All'interno di un ambiente conda è possibile installare qualsiasi pacchetto disponibile su PyPI utilizzando pip. Anche per questi pacchetti conda terrà traccia di tutto ciò che è stato installato.
I pacchetti personalizzati possono essere creati utilizzando il comando conda build e possono essere condivisi con altri caricandoli su Anaconda Cloud, PyPI o altri repository.
L'installazione predefinita di Anaconda2 include Python 2.7, mentre Anaconda3 include Python 3.7. Rimane comunque possibile creare nuovi ambienti che includono una qualsiasi versione di Python confezionata con conda.

### Navigatore Anaconda

Anaconda Navigator è un'interfaccia utente grafica (GUI) inclusa nella distribuzione Anaconda che consente agli utenti di: avviare applicazioni, gestire pacchetti e ambienti senza utilizzare la riga di comando . Navigator può cercare pacchetti su Anaconda Cloud o in un repository Anaconda locale, installarli in un ambiente e aggiornarli. È disponibile per Windows, macOS e Linux.
Le seguenti applicazioni sono disponibili di default in Navigator:
* JupyterLab
* Jupyter Notebook
* QtConsole
* Spyder
* Glue
* Orange
* RStudio
* Visual Studio Code

### Conda

Conda è un gestore di pacchetti e sistema di gestore di ambienti virtuali open source, multipiattaforma, indipendente dal linguaggio in grado di installare e aggiorna i pacchetti e le loro dipendenze. Creato per la gestione di programmi Python, può gestire e distribuire software per qualsiasi linguaggio (ad esempio, R), inclusi progetti multi-linguaggio. Il pacchetto conda è incluso in tutte le versioni di Anaconda, Miniconda, e Anaconda Repository.

## Anaconda Cloud

Anaconda Cloud è una piattaforma online che consente agli utenti di condividere e collaborare su pacchetti, progetti e ambienti conda e PyPI. Su questo cloud trovano spazio librerie e pacchetti, ambienti conda completi di pacchetti e dipendenze specifici, Notebook Jupyter e molto altro. Gli utenti non hanno bisogno di creare un account per cercare e scaricare pacchetti pubblici.
Gli utenti possono creare nuovi pacchetti utilizzando l'interfaccia a riga di comando (CLI) del client Anaconda, per poi caricarli manualmente o automaticamente sul Cloud.
Il 13 febbraio 2024, Anaconda ha annunciato una collaborazione con IBM per integrare il suo repository di pacchetti Python open source nella piattaforma Watsonx di IBM. Questa partnership permette agli utenti di accedere ai pacchetti Python di Anaconda, utilizzando le librerie e gli strumenti open source per lo sviluppo di applicazioni di intelligenza artificiale generativa.