Risolvere l’errore “ambiente gestito esternamente” di Pip su Linux
Se ti capita di utilizzare spesso Python e hai recentemente aggiornato a Ubuntu 23.04 o Fedora 38, è molto probabile che tu abbia incontrato l’errore “ambiente gestito esternamente” durante l’installazione di librerie con il gestore di pacchetti Python, pip.
Questo problema può risultare frustrante e sorprendente, poiché non si presentava nelle versioni precedenti di Ubuntu, Fedora e altre distribuzioni. Analizziamo le cause di questo errore e come risolverlo in modo rapido ed efficace.
Motivazioni dell’errore “ambiente gestito esternamente”
Le più recenti versioni delle distribuzioni Linux stanno progressivamente adottando gli standard definiti nel PEP-668. Queste modifiche implicano che, di default, i pacchetti pip non vengono installati in un contesto globale.
Tale implementazione mira a prevenire conflitti tra il gestore dei pacchetti della distribuzione e gli strumenti di gestione dei pacchetti Python. Per ulteriori dettagli, è possibile consultare la documentazione ufficiale del PEP-668. Se si desidera annullare o aggirare questo meccanismo, si possono seguire tre diverse strategie.
1. Eliminazione del File “EXTERNALLY-MANAGED”
Questa è la soluzione più semplice per risolvere l’errore “gestito esternamente” di pip. È sufficiente accedere alla directory /usr/lib/python3.xx ed eliminare il file EXTERNALLY-MANAGED. Ecco i comandi necessari:
cd /usr/lib/python3.11
sudo rm EXTERNALLY-MANAGED
Con questi passaggi, l’errore dovrebbe essere risolto. Se si desidera ripristinare il meccanismo di protezione, è possibile ricreare lo stesso file utilizzando il comando touch:
sudo touch EXTERNALLY-MANAGED
Ora, si dovrebbe essere in grado di installare pacchetti senza problemi tramite pip o pip3.
2. Utilizzo di Ambienti Virtuali per l’Installazione dei Pacchetti Pip
Un’altra opzione è quella di utilizzare ambienti virtuali per i progetti Python. Gli ambienti virtuali sono uno strumento eccellente per isolare i pacchetti specifici di un progetto dal sistema operativo, consentendo una migliore organizzazione.
Ecco come creare un ambiente virtuale e installare i pacchetti con pip:
- Per prima cosa, creare l’ambiente virtuale con:
python3 -m venv venv
- Successivamente, attivare l’ambiente virtuale tramite il file activate che si trova nella directory bin, utilizzando il comando source:
source venv/bin/activate
Il prompt della shell mostrerà il nome dell’ambiente virtuale. A questo punto, si possono installare tutti i pacchetti Python desiderati.
Come si può vedere, inizialmente non era possibile installare il pacchetto openai, ma dopo aver creato ed attivato l’ambiente virtuale, l’installazione è avvenuta senza problemi.
3. Impiego di pipx per l’Installazione dei Pacchetti Python
pipx è un’utility che consente l’installazione di pacchetti Python in ambienti virtuali e isolati. Questo strumento automatizza la creazione degli ambienti virtuali per ciascun pacchetto e la creazione di collegamenti simbolici ai pacchetti nella cartella .local/bin. In questo modo, ogni pacchetto può essere chiamato direttamente dalla shell.
L’utilizzo di pipx per installare i pacchetti evita l’errore “ambiente gestito esternamente”, poiché i pacchetti vengono installati in ambienti virtuali. Per utilizzare pipx, è necessario installarlo con il gestore pacchetti predefinito della propria distribuzione.
Per i derivati di Ubuntu/Debian:
sudo apt-get install pipx
Per i sistemi basati su Arch:
sudo pacman -S pipx
Per Fedora/CentOS/RHEL:
sudo dnf install pipx
Una volta installato pipx, il suo utilizzo è simile a quello di pip. Ecco un esempio di comando:
pipx install openai
Per maggiori informazioni, è possibile consultare la pagina man di pipx tramite il comando man.
Conclusioni e risoluzione dell’errore
Ora che hai risolto l’errore “ambiente gestito esternamente”, dovresti poter proseguire con i tuoi progetti o con l’apprendimento del linguaggio Python. Se sei interessato ad approfondire la programmazione, potresti voler considerare i diversi metodi gamificati di apprendimento, che possono aiutarti a padroneggiare Python o altri linguaggi in modo pratico e gratificante.