Comment corriger l'erreur pip « environnement géré en externe » sous Linux
Si votre quotidien est rythmé par l'utilisation de Python et que vous avez récemment migré vers Ubuntu 23.04 ou Fedora version 38, vous avez probablement été confronté à l'irritante erreur "environnement géré en externe" lors de l'installation de modules avec l'outil de gestion de paquets Python, pip.
Cette situation peut s'avérer frustrante et assez inattendue, car cette erreur ne se manifestait pas dans les versions antérieures d'Ubuntu, Fedora et d'autres distributions. Examinons ensemble la cause précise de cette erreur et les moyens rapides pour la résoudre.
Comprendre l'origine de l'erreur "environnement géré en externe"
Les versions les plus récentes des distributions Linux ont intégré les normes définies par la PEP-668. Ces modifications visent à garantir que les paquets installés via pip ne le soient pas par défaut dans un contexte global.
Cette mesure a été mise en place pour prévenir les conflits potentiels entre le gestionnaire de paquets de la distribution et les outils dédiés à la gestion de paquets Python. Pour une compréhension approfondie, vous pouvez consulter la documentation officielle PEP-668. Si vous souhaitez contourner ou annuler cette restriction, trois solutions s'offrent à vous.
1. Supprimer le fichier "EXTERNALLY-MANAGED"

C'est la solution la plus directe pour venir à bout de l'erreur pip "géré en externe". L'opération consiste simplement à naviguer vers le répertoire /usr/lib/python3.xx et à supprimer le fichier nommé EXTERNALLY-MANAGED. Voici les commandes à exécuter :
cd /usr/lib/python3.11
sudo rm EXTERNALLY-MANAGED
Après cette étape, l'erreur devrait disparaître. Si vous souhaitez revenir sur cette modification, recréez le fichier avec la commande touch :
sudo touch EXTERNALLY-MANAGED
Dès lors, vous devriez pouvoir installer les modules sans encombre à l'aide de pip ou pip3.
2. Recourir aux environnements virtuels pour l'installation des modules pip
Une autre stratégie consiste à employer des environnements virtuels pour vos projets Python. Les environnements virtuels sont un moyen idéal pour isoler les dépendances de chaque projet du reste du système et contribuent à une organisation claire de votre travail.
Voici les étapes pour créer un environnement virtuel et y installer des modules via pip :
python3 -m venv venv
source venv/bin/activate
L'invite de votre terminal devrait afficher le nom de l'environnement virtuel actif. Vous pouvez à présent installer les modules Python de votre choix.

Comme vous pouvez le constater, l'installation du module Python openai avait échoué initialement, mais après la création et l'activation de l'environnement virtuel, elle s'est déroulée avec succès.
3. Employer pipx pour installer les modules Python

pipx est un utilitaire conçu pour installer des paquets Python dans des environnements virtuels isolés. Il automatise la création d'environnements virtuels pour chaque module et génère des liens symboliques vers ces modules dans le dossier .local/bin, facilitant leur invocation depuis le terminal.
L'usage de pipx pour l'installation de modules évite l'erreur "environnement géré en externe" en utilisant des environnements virtuels. Pour commencer, il est nécessaire de l'installer avec le gestionnaire de paquets propre à votre distribution.
Pour les distributions basées sur Ubuntu/Debian :
sudo apt-get install pipx
Sur les systèmes Arch Linux :
sudo pacman -S pipx
Sur Fedora/CentOS/RHEL :
sudo dnf install pipx
Une fois pipx installé, vous pouvez l'utiliser de manière similaire à pip pour installer les modules. Voici un exemple de commande :
pipx install openai
Pour plus d'informations sur pipx, vous pouvez consulter sa page de manuel avec la commande man.
Vous avez désormais les clés pour résoudre l'erreur "géré en externe"
Après avoir surmonté l'erreur "environnement géré en externe", vous devriez pouvoir reprendre le cours de votre projet ou vous perfectionner dans la programmation Python. Si vous vous concentrez sur l'apprentissage, vous pourriez être intéressé par les différentes méthodes d'apprentissage ludiques qui rendent l'acquisition de Python, ou d'autres langages, plus rapide, pratique et stimulante.