Usar en python -m pip installlugar depip install
Ejemplo:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
Empecé a tener este problema después de una pipactualización:
pip install --upgrade --user pip
El ejecutable pip(resp. pip3) Lo proporciona su distribución ( python-pippaquete en Ubuntu 16.04).
Por lo tanto, no se mantiene actualizado con el pippaquete en sí a medida que actualiza pip, y puede romperse.
Si solo lo usa python -m pipdirectamente, por ejemplo, como en:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
recorre su ruta de Python y encuentra la última versión de pip, y ejecuta ese archivo.
Se basa en el hecho de que ese archivo es ejecutable, pero ese es un tipo de interfaz muy estándar y, por lo tanto, es menos probable que se rompa que el script de Debian más pirateado.
Luego recomiendo agregar los siguientes alias a su .bashrc:
pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )
El /usr/bin/pip3archivo Ubuntu 18.04 hace:
from pip import main
y presumiblemente mainfue eliminado de pipalgún punto que es lo que rompió las cosas.
La confirmación de ruptura de pip parece ser: 95bcf8c5f6394298035a7332c441868f3b0169f4 "Mover todas las API internas a pip._internal" que entró en pip 18.0.
Probado en Ubuntu 16.04 después de una actualización de pip39.0.1 a 18.0.
pyenv
Sin embargo, en última instancia, para el desarrollo serio de Python, solo recomendaría que instale su propio Python local con pyenv + virtualenv, que también solucionaría este error de Ubuntu: ¿Cómo instalo una versión diferente de Python usando apt-get?