Usar en python -m pip install
lugar depip install
Ejemplo:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
Empecé a tener este problema después de una pip
actualización:
pip install --upgrade --user pip
El ejecutable pip
(resp. pip3
) Lo proporciona su distribución ( python-pip
paquete en Ubuntu 16.04).
Por lo tanto, no se mantiene actualizado con el pip
paquete en sí a medida que actualiza pip, y puede romperse.
Si solo lo usa python -m pip
directamente, 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/pip3
archivo Ubuntu 18.04 hace:
from pip import main
y presumiblemente main
fue eliminado de pip
algú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 pip3
9.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?