Użyj python -m pip install
zamiastpip install
Przykład:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
Zacząłem dostawać ten problem po pip
aktualizacji:
pip install --upgrade --user pip
Plik pip
(względny pip3
) jest dostarczany przez twoją dystrybucję ( python-pip
pakiet na Ubuntu 16.04).
Dlatego nie jest aktualizowany z samym pip
pakietem podczas aktualizacji pip i może się zepsuć.
Jeśli używasz python -m pip
bezpoś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 main
został pip
w 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 pip3
9.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?