Используйте python -m pip installвместоpip install
Пример:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
Я начал получать эту проблему после pipобновления:
pip install --upgrade --user pip
pip(Соотв. pip3) Исполняемым предоставляется вашим дистрибутивом ( python-pipпакет на Ubuntu 16.04).
Следовательно, он не обновляется с pipсамим пакетом при обновлении pip и может сломаться.
Если вы просто используете python -m pipнапрямую, например, как в:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
он проходит по пути Python, находит последнюю версию pip и выполняет этот файл.
Он основан на том факте, что этот файл является исполняемым, но это очень стандартный тип интерфейса, и поэтому он менее подвержен поломке, чем хакерский скрипт Debian.
Тогда я рекомендую добавить следующие псевдонимы к вашему .bashrc:
pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )
/usr/bin/pip3Файл Ubuntu 18.04 делает:
from pip import main
и, вероятно, mainбыл удален pipв какой-то момент, который сломал вещи.
Разрывная фиксация в пипсах выглядит следующим образом: 95bcf8c5f6394298035a7332c441868f3b0169f4 «Переместить все внутренние API в pip._internal», которая вошла в пип 18.0.
Протестировано в Ubuntu 16.04 после обновления с pip39.0.1 до 18.0.
pyenv
В конечном счете, однако, для серьезной разработки Python я бы порекомендовал вам установить свой собственный локальный Python с помощью pyenv + virtualenv, что также поможет обойти эту ошибку Ubuntu: как мне установить другую версию Python с помощью apt-get?