Verwenden Sie python -m pip installanstelle vonpip install
Beispiel:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
Nach einem pipUpgrade ist dieses Problem aufgetreten:
pip install --upgrade --user pip
Die pip(bzw. pip3) ausführbare Datei wird von Ihrer Distribution bereitgestellt ( python-pipPaket unter Ubuntu 16.04).
Daher wird es nicht mit dem pipPaket selbst auf dem neuesten Stand gehalten, während Sie pip aktualisieren, und kann brechen.
Wenn Sie nur python -m pipdirekt 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/pip3Datei macht:
from pip import main
und vermutlich mainwurde pipirgendwann 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 pip39.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?