Cada vez que intento instalar cualquier paquete usando pip, recibo este error de importación:
guru@guru-notebook:~$ pip3 install numpy Traceback (most recent call last): File "/usr/bin/pip3", line 9, in <module> from pip import main ImportError: cannot import name 'main' guru@guru-notebook:~$ cat `which pip3` #!/usr/bin/python3 # GENERATED BY DEBIAN import sys # Run the main entry point, similarly to how setuptools does it, but because # we didn't install the actual entry point from setup.py, don't use the # pkg_resources API. from pip import main if __name__ == '__main__': sys.exit(main())Estaba funcionando bien antes, no estoy seguro de por qué arroja este error. He buscado acerca de este error, pero no puedo encontrar nada para solucionarlo.
Por favor, hágamelo saber si necesita más detalles, actualizaré mi pregunta.
Debe haber actualizado inadvertidamente su sistema pip (probablemente a través de algo como sudo pip install pip --upgrade )
pip 10.x ajusta dónde se encuentran sus componentes internos. El comando pip3 que está viendo es proporcionado por el mantenedor de su paquete (¿presumiblemente basado en Debian aquí?) Y no es un archivo administrado por pip.
Puede leer más sobre esto en el rastreador de problemas de pip
Probablemente no desee actualizar su pip del sistema y, en su lugar, usar un virtualenv.
Para recuperar el binario pip3 , deberá sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall .
Si desea continuar en "territorio no admitido" (actualizar un paquete del sistema fuera del administrador de paquetes del sistema), probablemente pueda salirse con la suya con python3 -m pip ... en lugar de pip3 .
Verifique si pip se ha almacenado en caché en otra ruta, para hacerlo, llame a $ which pip y verifique que la ruta sea diferente a la solicitada en el error, si ese es el caso, ejecute:
$ hash -rCuando el caché esté limpio, pip volverá a funcionar. referencia: http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory
Uso sudo apt remove python3-pip luego pip funciona.
~ sudo pip install pip --upgrade [sudo] password for sen: Traceback (most recent call last): File "/usr/bin/pip", line 9, in <module> from pip import main ImportError: cannot import name 'main' ➜ ~ sudo apt remove python3-pip Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: libexpat1-dev libpython3-dev libpython3.5-dev python-pip-whl python3-dev python3-wheel python3.5-dev Use 'sudo apt autoremove' to remove them. The following packages will be REMOVED: python3-pip 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. After this operation, 569 kB disk space will be freed. Do you want to continue? [Y/n] y (Reading database ... 215769 files and directories currently installed.) Removing python3-pip (8.1.1-2ubuntu0.4) ... Processing triggers for man-db (2.7.5-1) ... ➜ ~ pip Usage: pip <command> [options]Encontré el mismo problema en mi sistema Ubuntu 16.04. Logré solucionarlo reinstalando pip con el siguiente comando:
curl https://bootstrap.pypa.io/get-pip.py | sudo python3
Me pasó lo mismo en Pixelbook usando el nuevo LXC (strech). Esta solución es muy similar a la aceptada, con una diferencia sutil, que me arregló pip3.
sudo python3 -m pip install --upgrade pipEso superó la versión, y ahora funciona como se esperaba.
Lo encontré aquí... Python.org: asegúrese de que pip esté actualizado
Recuperar con python3 -m pip install --user pip==9.0.1 (o la versión que funcionó)
from pip._internal import mainEdite el código pip de
sudo nano /usr/bin/pip3Podemos borrar el error modificando el archivo pip.
Compruebe la ubicación del archivo:
$ which pipruta -> /usr/bin/pip
Vaya a esa ubicación ( /usr/bin/pip ) y abra la terminal
Introduzca: $ sudo nano pip
Puedes ver:
import sys from pip import main if __name__ == '__main__': sys.exit(main())Cambiar a:
import sys from pip import __main__ if __name__ == '__main__': sys.exit(__main__._main())luego ctrl + o escribir los cambios y salir
¡Espero que esto sirva!
resuelto en un solo paso.
Yo también enfrenté este problema, pero esto se puede resolver simplemente con 1 comando sin molestarse ni perder el tiempo y lo he probado en varios sistemas, es la solución más limpia para este problema. Y eso es:
Para python3: - sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall .
Con esto, puede simplemente instalar paquetes usando pip3 . para verificar use pip3 --version .
Para versiones anteriores, use: sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall .
Por esto, ahora puede simplemente instalar paquetes usando pip . para verificar use pip --version .
Tengo el mismo problema y lo resolvi. Aquí está mi solución. Primero, cuando ejecuto pip install algo, el error salió así:
Traceback (most recent call last): File "/usr/bin/pip3", line 9, in <module> from pip import main ImportError: cannot import name 'main'Entonces, cd en el archivo /usr/bin/ y cat pip3 para ver el código en él. Veo esto en el:
#!/usr/bin/python3 # GENERATED BY DEBIAN import sys # Run the main entry point, similarly to how setuptools does it, but because # we didn't install the actual entry point from setup.py, don't use the # pkg_resources API. from pip import main if __name__ == '__main__': sys.exit(main())Y luego creo que no estaba en la ruta de instalación. Así que cd en python3-pip, así:
cd /.local/lib/python3.5/site-packages/pip PD: debe hacer cd en las direcciones correctas en su computadora. Luego, cat el archivo para ver las diferencias (puede usar otras operaciones para ver el código):
cat __main__.pyY vi esto:
from __future__ import absolute_import import os import sys # If we are running from a wheel, add the wheel to sys.path # This allows the usage python pip-*.whl/pip install pip-*.whl if __package__ == '': # __file__ is pip-*.whl/pip/__main__.py # first dirname call strips of '/__main__.py', second strips off '/pip' # Resulting path is the name of the wheel itself # Add that to sys.path so we can import pip path = os.path.dirname(os.path.dirname(__file__)) sys.path.insert(0, path) from pip._internal import main as _main # isort:skip # noqa if __name__ == '__main__': sys.exit(_main())Entonces, ¿puedes ver la diferencia? Puedo darme cuenta de que tengo que hacer que el archivo sea igual al archivo en /usr/bin/pip3
Entonces, copié el código en /.local/lib/python3.5/site-packages/pip para reemplazar el código en /usr/bin/pip3 y el problema desapareció.
PD: pip3 o pip no tienen diferencia en este problema. ¡Seré feliz si mi solución resuelve su problema!
Como dijo @cryptoboy: compruebe qué versión de pip/python ha instalado
demon@UbuntuHP:~$ pip -V demon@UbuntuHP:~$ pip2 -V demon@UbuntuHP:~$ pip3 -Vy luego busque bibliotecas innecesarias en su carpeta .local/lib/.
Hice una copia de seguridad de la configuración cuando estaba migrando a Kubuntu más nuevo y tenía la carpeta .local/lib/python2.7/ en mi directorio de inicio. Python 3.6 instalado. ¡Acabo de quitar la carpeta anterior y ahora todo funciona muy bien!
Use python -m pip install en lugar de pip install
Ejemplo:
python -m pip install --user somepackage python3 -m pip install --user somepackage El ejecutable pip (resp. pip3 ) lo proporciona su distribución (paquete python-pip en Ubuntu 16.04) y se encuentra en /usr/bin/pip .
Por lo tanto, no se mantiene actualizado con el paquete pip en sí mismo a medida que actualiza pip y puede fallar.
Si solo usa python -m pip directamente, por ejemplo, como en:
python -m pip install --user somepackage python3 -m pip install --user somepackagepasa por su ruta de Python, encuentra la última versión de pip y ejecuta ese archivo.
Se basa en el hecho de que el archivo es ejecutable a través de la import , pero ese es un tipo de interfaz muy estándar y, por lo tanto, es menos probable que se rompa que el script Debian más pirata.
Entonces recomiendo agregar los siguientes alias a su .bashrc :
pip() ( python -m pip "$@" ) pip3() ( python3 -m pip "$@" ) El archivo Ubuntu 18.04 /usr/bin/pip3 hace lo siguiente:
from pip import main y presumiblemente main se eliminó de pip en algún momento, que es lo que rompió las cosas.
La confirmación pip de ruptura 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 un desarrollo serio de Python, solo recomendaría que instale su propio Python local con pyenv + virtualenv, que también evitaría este error de Ubuntu: https://askubuntu.com/questions/682869/how-do-i- instalar-una-versión-diferente-de-python-usando-apt-get/1195153#1195153
Estoy ejecutando en un sistema donde tengo sudo apt pero no sudo pip. (Y sin su acceso). Me metí en esta misma situación siguiendo el consejo de pip:
Está utilizando la versión 8.1.1 de pip, sin embargo, la 18.0 está disponible. Debería considerar actualizar a través del comando 'pip install --upgrade pip'.
Ninguna de las otras correcciones funcionó para mí, porque no tengo suficientes privilegios de administrador. Sin embargo, algunas cosas se me quedaron grabadas al leer sobre esto:
Entonces, encontré que esta línea de comando funcionaba para regresarme a donde estaba. Si estaba usando una versión diferente a la 8.1.1, obviamente querrá cambiar esa parte de la línea.
python -m pip install --force-reinstall pip==8.1.1 --userEso es lo único que funcionó para mí, ¡pero funcionó perfectamente!
En Debian necesitará actualizar apt primero....
sudo apt-get update -qq sudo apt-get install python-pip -qq sudo pip install pip --upgrade --quiet sudo pip2 install virtualenv --quietSi omite 'sudo apt-get update -qq', su pip se corromperá y mostrará el error 'no se puede encontrar el principal'.
Tuve el mismo error, pero python -m pip todavía funcionaba, así que lo arreglé con la opción nuclear sudo python -m pip install --upgrade pip . Lo hizo por mí.
En ubuntu 18.04.1 Bionic Beaver, debe cerrar sesión y volver a iniciar sesión (no es necesario reiniciar) para obtener el entorno adecuado.
$ sudo apt install python-pip $ pip --version pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7) $ pip install --upgrade pip $ pip --version Traceback (most recent call last): File "/usr/bin/pip", line 9, in <module> from pip import main ImportError: cannot import name main $ exit <login> $ pip --version pip 18.1 from /home/test/.local/lib/python2.7/site-packages/pip (python 2.7)Para la versión 2.7 de Python, la solución @Anthony funciona perfectamente, cambiando python3 a python de la siguiente manera:
sudo python -m pip uninstall pip && sudo apt install python-pip --reinstallPuede resolver este problema reinstalando pip.
Use uno de los siguientes comandos de línea de comandos para reinstalar pip:
Python2:
python -m pip uninstall pip && sudo apt install python-pip --reinstallPython3:
python3 -m pip uninstall pip && sudo apt install python3-pip --reinstallTruco y funciona también
sudo -H pip instalar lxml
Lo que funcionó para mí para corregir el error con el uso de pip3 fue:
sudo cp -v /usr/local/bin/pip3 /usr/bin/pip3
Todo funciona:
demon@UbuntuHP:~$ pip -V pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5) demon@UbuntuHP:~$ pip2 -V pip 10.0.1 from /home/demon/.local/lib/python2.7/site-packages/pip (python 2.7) demon@UbuntuHP:~$ pip3 -V pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)¿Quizás la nueva versión 10.0.1 de pip no actualiza el binario en /usr/bin? (que parece que no)
EDITAR: el mismo problema ocurre en Ubuntu 18.04. La mejor solución que he encontrado es vincular los binarios pip de /home/<user/.local/bin a /usr/local/bin o /usr/bin (según su preferencia), de la siguiente manera:
ln -sv /home/<user>/.local/bin/pip /usr/local/bin/pip ln -sv /home/<user>/.local/bin/pip2 /usr/local/bin/pip2 ln -sv /home/<user>/.local/bin/pip2.7 /usr/local/bin/pip2.7 ln -sv /home/<user>/.local/bin/pip3 /usr/local/bin/pip3 ln -sv /home/<user>/.local/bin/pip3.6 /usr/local/bin/pip3.6 NOTA: reemplace <user> con su usuario actual en ejecución
Las versiones asociadas (últimas) están en:
/home/demon/.local/lib/python3.6/site-packages/pip (python 3.6)
/home/demon/.local/lib/python2.7/site-packages/pip (python 2.7)
Los comandos anteriores no funcionaron para mí, pero fueron muy útiles:
sudo apt purge python3-pip sudo rm -rf '/usr/lib/python3/dist-packages/pip' sudo apt install python3-pip cd cd .local/lib/python3/site-packages sudo rm -rf pip* cd cd .local/lib/python3.5/site-packages sudo rm -rf pip* sudo pip3 install jupyterPor lo que vale, tuve el problema con pip (no pip2 o pip3 ):
$ pip -V Traceback (most recent call last): File "/usr/bin/pip", line 9, in <module> from pip import main ImportError: cannot import name main $ pip2 -V pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7) $ pip3 -V pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5) De alguna manera (no recuerdo cómo) tenía cosas de python instaladas en mi directorio ~/.local . Después de eliminar el directorio pip de allí, pip comenzó a funcionar nuevamente.
$ rm -rf /home/precor/.local/lib/python2.7/site-packages/pip $ pip -V pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)Use el siguiente comando antes de ejecutar cualquier comando pip
hash -d pipFuncionará
Hay algún problema con los paquetes, cuando genera el archivo /usr/bin/pip, debe cambiar la importación:
from pip import mainpara
from pip._internal import mainEso resuelve el problema, no estoy seguro de por qué se generó, pero dice algo en el siguiente problema:
Después de la actualización de pip 10 en pyenv "ImportError: no se puede importar el nombre 'main'"
Este error puede ser un permiso. Entonces, prueba ejecutando el comando con el indicador -H :
sudo -H pip3 install numpyPuedes probar esto:
sudo ln -sf $( type -P pip ) /usr/bin/pipTambién me encontré con este problema cuando quería actualizar el sistema pip pip3 de 9.0.1 a 19.2.3.
Después de ejecutar pip3 install --upgrade pip , la versión de pip se convierte en 19.2.3. Pero main() se ha movido en pip._internal en la última versión, lo que deja pip3 roto.
Entonces, en el archivo /usr/bin/pip3 , reemplace line 9 : from pip import main con from pip._internal import main . El problema se solucionará, funciona igual para python2-pip . (Probado en la distribución Ubuntu 18.04)
Según la respuesta de @ Vincent H.
Por favor, ejecute los siguientes comandos para hacer la corrección. Después de ejecutar python3 -m pip install --upgrade pip , ejecute el siguiente comando.
hash -r pipsimplemente puede arreglar las rutas pip y pip3 usando update-alternatives
Lo primero que debe verificar es su $PATH actual, ejecutar echo $PATH y ver si puede encontrar /usr/local/bin que es donde normalmente están pip3 y pip.
hay un cambio que su sistema está buscando aquí /bin/pip y /bin/pip3 así que le diré que corrija la RUTA agregando a su archivo ~/.bash_profile para que persista
export PATH=$PATH:/usr/local/bin y luego verifique si está arreglado con which pip y which pip3
si no, entonces use update-alternatives para arreglarlo finalmente
update-alternatives --install /bin/pip3 pip3 /usr/local/bin/pip3 30y si quieres apuntar pip a pip3 entonces
update-alternatives --install /bin/pip pip /usr/local/bin/pip3 30¡Esto funcionó para mí!
hash -r pip # or hash -d pipAhora, desinstale la versión instalada de pip y vuelva a instalarla usando los siguientes comandos.
python -m pip uninstall pip # sudo sudo apt install --reinstall python-pipSi el pip está roto, use:
python -m pip install --force-reinstall pip¡Espero eso ayude!
Usé el siguiente código para cargar un módulo que podría necesitar instalación, evitando así este error (que también obtuve), usando la última versión de Python y la última pip sin ningún problema.
try from colorama import Fore, Back, Style except: !pip install colorama from colorama import Fore, Back, Style