Use em python -m pip installvez depip install
Exemplo:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
Comecei a obter esse problema após uma pipatualização:
pip install --upgrade --user pip
O executável pip(resp. pip3) É fornecido pela sua distribuição ( python-pippacote no Ubuntu 16.04).
Portanto, ele não é mantido atualizado com o pippróprio pacote à medida que você atualiza o pip e pode quebrar.
Se você apenas usar python -m pipdiretamente, por exemplo, como em:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
ele percorre o caminho do Python e encontra a versão mais recente do pip e executa esse arquivo.
Ele se baseia no fato de que esse arquivo é executável, mas esse é um tipo de interface muito padrão e, portanto, menos provável de quebrar do que o script Debian mais hackier.
Então, recomendo adicionar os seguintes aliases ao seu .bashrc:
pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )
O /usr/bin/pip3arquivo Ubuntu 18.04 faz:
from pip import main
e, presumivelmente, mainfoi removido de pipalgum ponto que foi o que quebrou as coisas.
A confirmação do pip de interrupção parece ser: 95bcf8c5f6394298035a7332c441868f3b0169f4 "Mova todas as APIs internas para pip._internal", que foi introduzido no pip 18.0.
Testado no Ubuntu 16.04 após uma atualização de pip39.0.1 para 18.0.
pyenv
No final das contas, no entanto, para desenvolvimento sério do Python, eu recomendaria apenas que você instale o seu próprio Python local com pyenv + virtualenv, que também contornaria esse bug do Ubuntu: Como instalar uma versão diferente do Python usando o apt-get?