Pour les utilisateurs de la famille Ubuntu, Debian et Linux Mint
Grâce à l'explication d'Anthony ci - dessus , vous pouvez conserver votre pip système d'origine (dans / usr / bin / et dist-packages /) et supprimer le pip installé manuellement (dans ~ / .local /) pour résoudre le conflit:
$ python3 -m pip uninstall pip
Ubuntu / Debian pip v8.1.1 (16.04) du python3-pip
paquet debian (voir $ pip3 -V
) affiche les mêmes résultats de recherche que le dernier pip v10.0.1, et installe très bien les derniers modules de PyPI. Il a une pip
commande qui fonctionne (déjà dans $ PATH), plus la belle --user
option patché par défaut depuis 2016. En regardant les notes de publication de pip , les versions les plus récentes concernent principalement des corrections de bugs spécifiques au cas d'utilisation et certaines nouvelles fonctionnalités, donc pas tout le monde doit se précipiter pour mettre à jour le pip. Et le nouveau pip 10 peut être déployé sur Python virtualenvs, de toute façon.
Mais indépendamment des pips, votre système d'exploitation permet d'installer rapidement des modules Python communs (y compris numpy) avec APT, sans avoir besoin de pip, par exemple:
$ sudo apt install python3-numpy python3-scipy
(avec les dépendances du système)
$ sudo apt install python3-pip
(pip corrigé Debian, légèrement plus ancien mais cela n'a pas d'importance)
Rappel rapide de la syntaxe apt (veuillez consulter man apt
pour plus de détails):
$ sudo apt update
(pour resynchroniser les fichiers d'index des packages Ubuntu à partir de sources à jour)
$ apt search <python-package-name>
(recherche en texte intégral sur tous les packages disponibles)
$ apt show <python-package-name>
(affiche la description détaillée du package)
$ sudo apt install <python-package-name>
Les noms de paquet préfixés par python-
sont pour Python 2; et précédés de python3-
sont pour Python 3 (par exemple python3-pandas). Il y en a des milliers et ils subissent des tests d'intégration dans Debian et Ubuntu. À moins que vous ne cherchiez à installer au niveau de chaque utilisateur ( pip install --user
option) ou dans virtualenv / venv, apt pourrait être ce dont vous aviez besoin. Ces packages système sont également accessibles depuis les envs virtuels, car virtualenv se remettra gracieusement à utiliser les bibliothèques système lors de l'importation si vos envs n'ont pas donné de copies des modules. Vos --user
modules personnalisés par utilisateur (avec pip ) dans ~/.local/lib
les remplaceront également.
Remarque, puisqu'il s'agit d'une installation à l'échelle du système , vous aurez rarement besoin de les supprimer (vous devez être attentif aux dépendances du système d'exploitation). C'est pratique pour les packages avec de nombreuses dépendances système (comme scipy ou matplotlib), car APT gardera une trace et fournira toutes les bibliothèques système et extensions C requises, tandis qu'avec pip vous n'avez aucune garantie .
En fait, pour les packages Python à l'échelle du système (contrairement à l'utilisateur, au niveau du répertoire personnel ou inférieur), Ubuntu s'attend à utiliser le gestionnaire de packages APT (plutôt que sudo pip
) pour éviter de casser le système d'exploitation: sudo pip3
cible le même /usr/lib/python3/dist-packages
répertoire où APT stocke le système d'exploitation -modules sensibles. Les versions récentes de Debian / Ubuntu dépendent fortement de Python 3, donc ses modules pré-installés sont gérés par apt
et ne doivent pas être modifiés.
Donc, si vous utilisez la pip3 install
commande, assurez-vous qu'elle s'exécute dans un environnement de développement virtuel isolé, comme avec virtualenv ( sudo apt install python3-virtualenv
), ou avec Python3 intégré ( -m venv
), ou au niveau par utilisateur ( --user
option pip, par défaut dans Ubuntu fourni) pip depuis 2016), mais pas à l'échelle du système (jamais sudo pip3
!), car pip interfère avec le fonctionnement du gestionnaire de paquets APT et peut affecter les composants du système d'exploitation Ubuntu lorsqu'un module python utilisé par le système est modifié de manière inattendue. Bonne chance!
P. S. Tout ce qui précède est pour la solution «idéale» (façon Debian / Ubuntu).
Si vous souhaitez toujours utiliser le nouveau pip3 v10 exclusivement, il existe 3 solutions rapides:
- ouvrez simplement une nouvelle session bash (un nouvel onglet de terminal, ou tapez
bash
) - et pip3 v10 devient disponible (voir pip3 -V
). le pip3 v8 de debian reste installé mais est cassé; ou
- la commande
$ hash -d pip3 && pip3 -V
pour actualiser le chemin d'accès pip3 dans le $ PATH. le pip3 v8 de debian reste installé mais est cassé; ou
- la commande
$ sudo apt remove python3-pip && hash -d pip3
pour désinstaller complètement pip3 v8 de debian, en faveur de votre nouveau pip3 v10.
Remarque: Vous devrez toujours ajouter un --user
indicateur à tout pip non fourni par Debian, sauf si vous êtes dans un virtualenv! (il déploie les paquets python sur ~/.local/
, par défaut dans python3-pip et python-pip fournis par debian / ubuntu depuis 2016). Votre utilisation de pip 10 à l'échelle du système, en dehors de virtualenv, n'est pas vraiment prise en charge par Ubuntu / Debian. Jamais sudo pip3
!
Plus de détails:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100