Utiliser python -m pip installau lieu depip install
Exemple:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
J'ai commencé à avoir ce problème après une pipmise à niveau:
pip install --upgrade --user pip
L' exécutable pip(resp. pip3) Est fourni par votre distribution ( python-pippackage sur Ubuntu 16.04).
Par conséquent, il n'est pas mis à jour avec le pippackage lui-même lors de la mise à niveau de pip et peut se casser.
Si vous utilisez simplement python -m pipdirectement, par exemple comme dans:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
il passe par votre chemin Python et trouve la dernière version de pip, et exécute ce fichier.
Il repose sur le fait que ce fichier est exécutable, mais il s'agit d'un type d'interface très standard, et donc moins susceptible de se casser que le script Debian plus pirate.
Ensuite, je recommande d'ajouter les alias suivants à votre .bashrc:
pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )
Le /usr/bin/pip3fichier Ubuntu 18.04 fait:
from pip import main
et a probablement mainété retiré pipà un moment donné qui est ce qui a brisé les choses.
La rupture de la validation pip semble être: 95bcf8c5f6394298035a7332c441868f3b0169f4 "Déplacer toutes les API internes vers pip._internal" qui est entré dans pip 18.0.
Testé dans Ubuntu 16.04 après une mise à jour de pip39.0.1 à 18.0.
pyenv
En fin de compte, cependant, pour un développement Python sérieux, je recommanderais simplement d'installer votre propre Python local avec pyenv + virtualenv, qui contournerait également ce bogue Ubuntu: Comment installer une version Python différente en utilisant apt-get?