Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

388
Views
Error después de actualizar pip: no se puede importar el nombre 'principal'

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.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

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 .

over 4 years ago · Santiago Trujillo Report

0

Podemos borrar el error modificando el archivo pip.

Compruebe la ubicación del archivo:

 $ which pip

ruta -> /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!

over 4 years ago · Santiago Trujillo Report

0

Para usuarios de la familia Ubuntu, Debian, Linux Mint

Gracias a la explicación anterior de Anthony, puede conservar su pip original del sistema (en /usr/bin/ y dist-packages/) y eliminar el pip instalado manualmente (en ~/.local/) para resolver el conflicto:

$ python3 -m pip uninstall pip

Ubuntu/Debian pip v8.1.1 (16.04) del paquete debian python3-pip (consulte $ pip3 -V ) muestra los mismos resultados de búsqueda que el último pip v10.0.1 e instala los módulos más recientes de PyPI perfectamente. Tiene un comando pip en funcionamiento (ya en $PATH), además de la opción agradable --user parcheada de forma predeterminada desde 2016. Mirando las notas de la versión de pip , las versiones más nuevas son principalmente sobre correcciones de errores específicas del caso de uso y ciertas nuevas características, por lo que no todos tienen que apresurarse a actualizar pip todavía. Y el nuevo pip 10 se puede implementar en Python virtualenvs, de todos modos.

Pero independientemente de los pips, su sistema operativo permite instalar rápidamente módulos comunes de Python (incluido numpy) con APT, sin necesidad de pip, por ejemplo:
$ sudo apt install python3-numpy python3-scipy (con dependencias del sistema)
$ sudo apt install python3-pip (pip parcheado por Debian, un poco más antiguo pero no importa)

Recordatorio rápido de sintaxis de apt (ver man apt para más detalles):
$ sudo apt update (para resincronizar archivos de índice de paquetes de Ubuntu de fuentes actualizadas)
$ apt search <python-package-name> (búsqueda de texto completo en todos los paquetes disponibles)
$ apt show <python-package-name> (muestra la descripción detallada del paquete)
$ sudo apt install <python-package-name>

Los nombres de paquetes con el prefijo python- son para Python 2; y con el prefijo python3- son para Python 3 (por ejemplo, python3-pandas). Hay miles y se someten a pruebas de integración dentro de Debian y Ubuntu. A menos que busque instalar a nivel de usuario ( pip install --user de usuario) o dentro de virtualenv/venv, apt podría ser lo que necesitaba. También se puede acceder a estos paquetes del sistema desde entornos virtuales, ya que virtualenv volverá a usar las bibliotecas del sistema al importar si sus entornos no han proporcionado copias de los módulos. Sus módulos por usuario instalados de forma personalizada (con pip --user ) en ~/.local/lib también los anularán.

Tenga en cuenta que, dado que se trata de una instalación de todo el sistema , rara vez necesitará eliminarlos (debe tener en cuenta las dependencias del sistema operativo). Esto es conveniente para paquetes con muchas dependencias del sistema (como con scipy o matplotlib), ya que APT realizará un seguimiento y proporcionará todas las bibliotecas del sistema y las extensiones C requeridas, mientras que con pip no tiene tales garantías .

De hecho, para los paquetes Python de todo el sistema (en contraste con por usuario, nivel de directorio de inicio o inferior), Ubuntu espera usar el administrador de paquetes APT (en lugar de sudo pip ) para evitar romper el sistema operativo: sudo pip3 apunta a lo mismo /usr/lib/python3/dist-packages directorio /usr/lib/python3/dist-packages donde APT almacena módulos sensibles al sistema operativo. Las versiones recientes de Debian/Ubuntu dependen en gran medida de Python 3, por lo que sus módulos preinstalados son administrados por apt y no deben cambiarse.

Entonces, si usa el comando de pip3 install , asegúrese de que se ejecute en un entorno de desarrollo virtual aislado, como con virtualenv ( sudo apt install python3-virtualenv ), o con Python3 integrado ( -m venv ), o en un per- nivel de usuario (opción --user pip, predeterminado en pip proporcionado por Ubuntu desde 2016), pero no en todo el sistema (¡nunca sudo pip3 !), porque pip interfiere con la operación del administrador de paquetes APT y puede afectar los componentes del sistema operativo Ubuntu cuando El módulo de python utilizado por el sistema se cambia inesperadamente. ¡Buena suerte!


P. S. Todo lo anterior es para la solución 'ideal' (forma Debian/Ubuntu).

Si aún desea utilizar el nuevo pip3 v10 exclusivamente, existen 3 soluciones rápidas:

  • simplemente abra una nueva sesión de bash (una nueva pestaña de terminal, o escriba bash ) y pip3 v10 estará disponible (vea pip3 -V ). pip3 v8 de debian permanece instalado pero está roto; o
  • el comando $ hash -d pip3 && pip3 -V para actualizar el nombre de ruta de pip3 en $PATH. pip3 v8 de debian permanece instalado pero está roto; o
  • el comando $ sudo apt remove python3-pip && hash -d pip3 para desinstalar completamente el pip3 v8 de debian, a favor de su nuevo pip3 v10.

Nota: Siempre tendrá que agregar el indicador --user a cualquier pip no proporcionado por Debian, ¡a menos que esté en un virtualenv! (Despliega paquetes de python en ~/.local/ , por defecto en python3-pip y python-pip proporcionados por debian/ubuntu desde 2016). Su uso de pip 10 en todo el sistema, fuera de virtualenv, no es realmente compatible con Ubuntu/Debian. ¡Nunca sudo pip3 !

Más detalles:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!