Verwenden Sie python -m pip install
anstelle vonpip install
Beispiel:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
Nach einem pip
Upgrade ist dieses Problem aufgetreten:
pip install --upgrade --user pip
Die pip
(bzw. pip3
) ausführbare Datei wird von Ihrer Distribution bereitgestellt ( python-pip
Paket unter Ubuntu 16.04).
Daher wird es nicht mit dem pip
Paket selbst auf dem neuesten Stand gehalten, während Sie pip aktualisieren, und kann brechen.
Wenn Sie nur python -m pip
direkt verwenden, zB wie in:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
Es durchsucht Ihren Python-Pfad, findet die neueste Version von pip und führt diese Datei aus.
Es beruht auf der Tatsache, dass diese Datei ausführbar ist, dies jedoch ein sehr standardmäßiger Schnittstellentyp ist und daher weniger wahrscheinlich ist, dass sie kaputt geht als das hackerere Debian-Skript.
Dann empfehle ich, die folgenden Aliase zu Ihrem hinzuzufügen .bashrc
:
pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )
Die Ubuntu 18.04- /usr/bin/pip3
Datei macht:
from pip import main
und vermutlich main
wurde pip
irgendwann davon abgezogen, was die Dinge kaputt machte.
Der Fehler beim Festschreiben des Pip lautet anscheinend: 95bcf8c5f6394298035a7332c441868f3b0169f4 "Alle internen APIs nach pip._internal verschieben", der in Pip 18.0 eingegangen ist .
Getestet in Ubuntu 16.04 nach einem Update von pip3
9.0.1 auf 18.0.
pyenv
Letztendlich würde ich jedoch für eine ernsthafte Python-Entwicklung nur empfehlen, dass Sie Ihr eigenes lokales Python mit pyenv + virtualenv installieren, um diesen Ubuntu-Fehler zu umgehen: Wie installiere ich eine andere Python-Version mit apt-get?