Użyj python -m pip installzamiastpip install
Przykład:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
Zacząłem dostawać ten problem po pipaktualizacji:
pip install --upgrade --user pip
Plik pip(względny pip3) jest dostarczany przez twoją dystrybucję ( python-pippakiet na Ubuntu 16.04).
Dlatego nie jest aktualizowany z samym pippakietem podczas aktualizacji pip i może się zepsuć.
Jeśli używasz python -m pipbezpośrednio, np. Jak w:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
przechodzi przez ścieżkę Pythona, znajduje najnowszą wersję pipa i wykonuje ten plik.
Opiera się na fakcie, że plik ten jest wykonywalny, ale jest to bardzo standardowy typ interfejsu i dlatego jest mniej prawdopodobne, że się zepsuje niż trudniejszy skrypt Debiana.
Następnie zalecamy dodanie następujących aliasów do .bashrc:
pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )
Plik Ubuntu 18.04 /usr/bin/pip3:
from pip import main
i prawdopodobnie mainzostał pipw pewnym momencie usunięty z tego, co zepsuło.
Wydaje się, że łamanie zatwierdzenia pip wygląda następująco: 95bcf8c5f6394298035a7332c441868f3b0169f4 „Przenieś wszystkie wewnętrzne interfejsy API do pip._internal” które przeszły do pip 18.0.
Testowane w Ubuntu 16.04 po aktualizacji z pip39.0.1 do 18.0.
pyenv
Ostatecznie jednak w przypadku poważnego rozwoju Pythona po prostu zaleciłbym zainstalowanie własnego lokalnego Pythona za pomocą pyenv + virtualenv, który obejmie również ten błąd Ubuntu: Jak zainstalować inną wersję Pythona za pomocą apt-get?