Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Python: il package manager pipx

Cos'è il package manager pipx e perché utilizzarlo per installare le librerie Python ci permette di evitare conflitti
Cos'è il package manager pipx e perché utilizzarlo per installare le librerie Python ci permette di evitare conflitti
Link copiato negli appunti

Quando si vuole installare una libreria Python il primo strumento che viene in mente di utilizzare è probabilmente pip. Si tratta di una soluzione da linea di comando che non presenta particolari difficoltà dal punto di vista della sintassi. Il package manager, considerato uno standard, fa riferimento al repository PyPI (Python Package Index) che attualmente occupa oltre 460 mila progetti. Esso verifica la presenza di una libreria, la scarica e la installa tramite il comando pip install. Ad esempio:

pip install numpy

Fin qui tutto bene, se non fosse per il fatto che pip presenta un importante difetto, se così lo vogliamo chiamare. Non gestisce infatti le sempre possibili incompatibilità tra le librerie.

L'errore "externally managed environment"

Per questo motivo nasce l'errore externally managed environment. Implementato nelle release più recenti di distribuzioni come Fedora e Ubuntu proprio per scongiurare eventuali conflitti tra i package manager dei sistemi operativi e strumenti come pip.

Tali conflitti possono essere evitati utilizzando venv, un modulo che ha il compito di creare degli ambienti virtuali nei quali i package possano essere installati isolatamente. Ad ogni ambiente corrisponde un set di librerie indipendente, il che impedisce il verificarsi di incompatibilità. In sostanza venv fa in modo che le librerie Python integrate nel sistema tramite pip non vengano installate a livello globale, cioè direttamente nell'ambiente principale del linguaggio. Una volta creato un ambiente virtuale deve esser attivato, viene così linkato all'interprete Python e gli script al suo interno diventano eseguibili.

venv rappresenta una buona soluzione per la gestione dei conflitti, qui lo vediamo alla prova con l'installazione della libreria Shell GPT, ma il suo utilizzo non è particolarmente intuitivo. Ecco perché introdurremo ora pipx, un'alternativa che svolge lo stesso compito ma con una sintassi molto più simile a quella di pip e con più automatismi rispetto a venv.

Cos'è pipx

pipx è uno strumento utilizzabile da linea di comando per il linguaggio Python che permette di installare e gestire in modo isolato i package del linguaggio. Fino a qui niente di nuovo, è funzionalmente simile a pip e per alcuni aspetti a venv, unendone in parte le caratteristiche. Presenta però il vantaggio di focalizzarsi sull'installazione di pacchetti che possono essere eseguiti attraverso script tra loro indipendenti.

pipx garantisce che le dipendenze dei pacchetti non entrino in conflitto con altri package o con il sistema ospitante. Consente quindi di installare più versioni di uno stesso pacchetto senza incompatibilità o interferenze. Dispone inoltre di un'interfaccia più intuitiva per l'esecuzione di pacchetti installati, permettendo di lanciare script direttamente dal terminale. Senza che l'utilizzatore debba attivare manualmente gli ambiente virtuali.

pipx può quindi rappresentare un valido sostituto di pip, anche se è bene precisare che non si tratta di due soluzioni completamente intercambiabili. pip infatti viene utilizzato soprattutto per gestire pacchetti Python che fungono da librerie all'interno di progetti. pipx è stato invece progettato nello specifico per la gestione di pacchetti eseguibili, mettendo a disposizione un'installazione isolata che semplifica l'esecuzione degli script.

Installazione di pipx

Esistono diversi modi di installare pipx. Su macOS per esempio, è possibile utilizzare brew, mentre su Windows e Linux si può far ricorso a pip. Su Linux Mint e distribuzioni simili possiamo usare la seguente istruzione:

python3 -m pip install --user pipx

Se tutto dovesse andare nel migliore dei modi l'output del comando dovrebbe essere simile a quello raffigurato nell'immagine proposta di seguito:

Fatto questo pipx non sarà pronto all'uso in quanto la sua installazione deve essere aggiunta al $PATH, la variabile che archivia i percorsi alle directory dove devono essere ricercati gli eseguibili necessari al funzionamento dei comandi. Digitiamo quindi la seguente istruzione e premiamo Invio:

python3 -m pipx ensurepath

Nel caso in cui, infine, si voglia aggiornare la propria versione di pipx basterà lanciare il comando:

python3 -m pip install --user --upgrade pipx

Come utilizzare pipx

pipx può essere utilizzato per installare package, aggiornare pacchetti o rimuoverli dal sistema. Ognuna di queste operazioni prevede una sintassi differente.

Installare package con pipx

L'installazione di un nuovo package con pipx avviene tramite il comando pipx install seguito dal nome del pacchetto, riprendendo quasi fedelmente la sintassi già prevista per pip. Un esempio di pacchetto installato con pipx potrebbe essere httpie. Quest'ultimo è uno strumento da linea di comando pensato per semplificare l'interazione con API e servizi Web tramite richieste HTTP. Per installarlo con pipx l'istruzione da utilizzare è:

pipx install httpie

Chiaramente è sempre possibile utilizzare il medesimo comando per installare una versione specifica di un package. A questo scopo basta specificare il numero di rilascio della release desiderata. Come nell'esempio seguente, dove ad essere installata è la versione "21.7b0" di black, uno strumento di formattazione del codice Python secondo le convenzioni di stile predefinite per il linguaggio:

pipx install black==21.7b0

Aggiornare package con pipx

pipx consente di aggiornare un package già installato nel sistema per disporre della versione più recente. A questo scopo abbiamo a disposizione il comando pipx upgrade seguito dal nome del package da aggiornare. Quindi, se volessimo installare l'ultima release del package black "21.7b0" descritta in precedenza, il nostro comando dovrebbe essere il seguente:

pipx upgrade black

Come è possibile notare dall'immagine proposta di seguito, grazie a questa istruzione è stato possibile aggiornare black dalla versione "21.7b0" alla "23.3.0". L'ultima disponibile al momento corrente.

È infine possibile aggiornare tutti i package installati con un unico comando:

pipx upgrade-all

Disinstallare package con pipx

Esattamente come pipx permette di installare package, consente anche di disinstallarli. La sintassi richiesta per questa operazione è praticamente identica a quella dei comandi analizzati fino ad ora, con l'unica differenza che l'opzione utilizzata è uninstall. Quest'ultima deve essere poi seguita dal nome del pacchetto da rimuovere. Se ad esempio volessimo disinstallare il package httpie installato in precedenza, il nostro comando dovrebbe essere:

pipx uninstall httpie

Per controllare quali package sono presenti nel sistema è sempre possibile generarne l'elenco completo tramite il comando pipx list.

Conclusioni

Con le dovute differenze, pipx può essere considerata una valida alternativa a pip se si desidera installare package Python in ambienti isolati che non devono essere gestiti manualmente. Tale caratteristica permette di integrare nuovi pacchetti nel linguaggio evitando di generare conflitti.

Ti consigliamo anche