Usa python -m pip installinvece dipip install
Esempio:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
Ho iniziato a ricevere questo problema dopo un pipaggiornamento:
pip install --upgrade --user pip
L' eseguibile pip(resp. pip3) È fornito dalla tua distribuzione ( python-pippacchetto su Ubuntu 16.04).
Pertanto, non viene aggiornato con il pippacchetto stesso durante l'aggiornamento del pip e potrebbe non funzionare.
Se lo usi python -m pipdirettamente, ad es. Come in:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
passa attraverso il tuo percorso Python e trova l'ultima versione di pip ed esegue quel file.
Si basa sul fatto che quel file è eseguibile, ma si tratta di un tipo di interfaccia molto standard, e quindi meno probabile che si rompa rispetto allo script hacker Debian.
Quindi ti consiglio di aggiungere i seguenti alias al tuo .bashrc:
pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )
Il /usr/bin/pip3file Ubuntu 18.04 fa:
from pip import main
e presumibilmente è mainstato rimosso da un pipcerto punto che è ciò che ha rotto le cose.
Il commit del pip interrotto sembra essere: 95bcf8c5f6394298035a7332c441868f3b0169f4 "Sposta tutte le API interne in pip._internal" che è andato nel pip 18.0.
Testato in Ubuntu 16.04 dopo un aggiornamento dalla pip39.0.1 alla 18.0.
pyenv
In definitiva, tuttavia, per un serio sviluppo di Python, consiglierei semplicemente di installare il proprio Python locale con pyenv + virtualenv, che aggirerebbe anche questo bug di Ubuntu: Come posso installare una versione di Python diversa usando apt-get?