Используйте 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 после обновления с pip3
9.0.1 до 18.0.
pyenv
В конечном счете, однако, для серьезной разработки Python я бы порекомендовал вам установить свой собственный локальный Python с помощью pyenv + virtualenv, что также поможет обойти эту ошибку Ubuntu: как мне установить другую версию Python с помощью apt-get?