Python: This environment is externally managed

Résolu
pacorabano Messages postés 173 Date d'inscription lundi 20 juin 2016 Statut Membre Dernière intervention 9 décembre 2024 - Modifié le 28 nov. 2024 à 15:44
mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 - 3 oct. 2024 à 13:58

Bonjour, je suis bloqué devant ce message :

This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
 

1 réponse

mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 7 809
Modifié le 3 oct. 2024 à 14:02

Bonjour,

Je détaille ci-dessous la démarche générale. Si tu rencontres des difficultés, indique dans ton message :

  • quel paquet python tentes-tu d'installer ;
  • s'il être installé pour ton utilisateur courant ou tous les utilisateurs ;
  • les éventuels messages d'erreurs rencontrés

Choix du gestionnaire de paquets

Supposons que ce soit numpy. Sous Linux, tu as deux manières de l'installer :

  • soit via le gestionnaire de paquets Linux (APT) : l'installation se fait pour l'ensemble des utilisateurs.
  • soit via le gestionnaire de paquets python (PIP) : l'installation se fait généralement plutôt pour un seul utilisateur, et peut potentiellement se faire pour tous les utilisateurs.

Sous Windows, tu n'aurais pas le choix, tu devrais passer par pip.

Il n'y a pas vraiment de meilleure manière de procéder (entre APT et PIP), ça dépend des goûts, et tu peux d'ailleurs panacher (par exemple installer autant que possible avec APT, et sinon avec PIP).

  • Si tu installes un paquet python avec APT : tous les utilisateurs ont accès au paquet, et il est cohérent et mis à jour avec le reste du système. Le paquet est installé une et une seule fois, et APT gère très bien les dépendances. Cependant, on ne trouve pas toujours tous les paquets python dans APT, et pas toujours dans leur version la plus récente.
  • Si tu installes avec paquet python avec PIP : comme l'installation se fait plutôt par utilisateur, il faut la faire pour chaque utilisateur (ce qui consomme plus de place). L'avantage c'est que tu es sûr.e de trouver le paquet mais PIP ne gère pas les dépendances aussi bien qu'APT.
  • Si tu installes un paquet avec APT et PIP : python3 choisira en priorité le paquet installé via pip, comme le montrerait ce script python : 
    #!/usr/bin/env python3
    import sys
    print(sys.path)

Installation via APT

1) Pour installer un paquet via APT, il faut commencer par indexer la liste des mises à jour disponibles :

sudo apt update

2) Ensuite, il trouver le nom du paquet APT (avec apt search) correspondant au module python que tu souhaites installer,  puis installer le paquet APT ainsi trouvé (avec apt install). 

  • Tous les paquets python que tu peux être amené.e à installer sont préfixés par "python3-".
  • Il ne faut pas considérer les paquets préfixés par "python-" (qui correspondent en réalité à python2, qui est obsolète).

Dans mon exemple, le paquet correspondant à numpy python3-numpy. De manière générale :

apt search numpy
sudo apt install python3-numpy

Installation via PIP

1) Si ça n'est pas déjà fait, on installe PIP :

sudo apt update
sudo apt install python3-pip

Une fois ce paquet APT installé, la commande pip3 est désormais disponible.

Remarque : tu verras souvent sur Internet des commandes "pip install ...". Tu dois utiliser "pip3 install" car sous Linux "pip install" concerne python2 (à moins de configurer un alias).

2) Ensuite, on cherche le nom sur pypi. Dans mon exemple, le paquet s'appelle numpy. La commande PIP est donc :

pip3 install numpy

Remarques

Dans le cas général, le nom du paquet APT, du paquet PIP, et du module python que tu importes dans le code peuvent différer. Un exemple emblématique est scikit-learn :

  • Nom PIP : scikit-learn : 
    pip3 install scikit-learn
  • Nom APT : python3-sklearn : 
    sudo apt install python3-sklearn
  • Nom du module python : sklearn : 
    #!/usr/bin/env python3
    
    import sklearn

Bonne chance

0