ImportError: no se puede importar el nombre principal cuando se ejecuta el comando pip --version en windows7 32 bit

144

He instalado el último python (2.7.9) incluido con pip y setuptools para Windows de 32 bits. He intentado reinstalar pip pero el problema persiste.

Aquí está el error después de ejecutar pip --versionen cmd Administrador:

Traceback (most recent call last):
 File "D:\Python\lib\runpy.py", line 162, in _run_module_as_main
  "__main__", fname, loader, pkg_name)
 File "D:\Python\lib\runpy.py", line 72, in _run_code 
  exec code in run_globals
 File "D:\Python\Scripts\pip.exe\__main__.py", line 5, in <module>
ImportError: cannot import name main
Woootiness
fuente
1
Puede estar relacionado con el permiso de archivo. Hubo un problema con Python 3.4 aquí que se resolvió, vale la pena comprobarlo.
Kobi K
Hice las soluciones usando el comando icacls pero el error persiste.
Woootiness
2
La respuesta "easy_install -U pip" se proporciona en stackoverflow.com/questions/28031277/…
unpack

Respuestas:

172

Aunque la pregunta original parece ser de 2015, este 'error' parece afectar también a los usuarios que instalan pip-10.0.0.

La solución alternativa no es modificar pip, sin embargo, cambiar la forma en que se llama pip. En lugar de llamar /usr/bin/pipa piptravés de Python. Por ejemplo, en lugar de lo siguiente:

pip install <package>

Si desde Python versión 2 (o se llama el binario predeterminado de Python python), haga lo siguiente:

python -m pip install <package>

o si de Python versión 3:

python3 -m pip install <package> 
Wan Bachtiar
fuente
Sí, no recuerdo lo que hice para arreglar esto, pero lo mantengo abierto para otros.
Woootiness
Cuando utilicé el comando dado, recibí un error de permisos (que también recibí después de alterar pip de acuerdo con la respuesta de catalinpopescu). Sin embargo, para descargar paquetes para el alcance del usuario (para que no necesite derechos de administración) use: python3 -m pip install <package> --user (funciona para python3, también debería funcionar para python2 aunque no probado)
randmin
Me ayudó en una Mac.
Charles Ross
Mejor respuesta Modificar el código fuente es un pantano.
ozgur
Este es un muy buen camino a seguir. También hace que sea realmente fácil asegurarse de que está utilizando la versión correcta:python2 -m pip install $package
JamesTheAwesomeDude
256

El error se encuentra en pip 10.0.0.

En Linux necesita modificar el archivo: / usr / bin / pip desde:

from pip import main
if __name__ == '__main__':
    sys.exit(main())

a esto:

from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())
catalinpopescu
fuente
1
Parece que esta es la solución. Intenté esto y no hay problema hasta ahora.
Khue
2
Estoy usando pip 10.0.1 y el error sigue ahí. Su solución ayudó. ¡Gracias! ¿Has informado sobre este error y la solución a los desarrolladores?
Alexey Subach
77
Aunque esta solución funciona, absténgase de modificarse pip. Vea una solución más limpia a continuación para llamar pipdesde Python.
Wan Bachtiar
1
No ayuda en "pip 10.0.1". pip --version pip 10.0.1 from /home/x/.local/lib/python2.7/site-packages/pip (python 2.7) uso: sudo pip install tensorflow salida:Traceback (most recent call last): File "/usr/bin/pip", line 9, in <module> from pip import main ImportError: cannot import name main
user_x
3
@creepy_driver, no se recomienda modificar manualmente un paquete instalado para adaptarlo al entorno porque la próxima vez que actualice a otra versión, es decir, 10.0.3, es probable que encuentre el mismo problema. La solución alternativa de ejecutar a piptravés de Python instalado apuntará a pip para usar el entorno adecuado correctamente.
Wan Bachtiar
60

En Ubuntu Server 16, tengo el mismo problema con python27. Prueba esto:

Cambio

from pip import main
if __name__ == '__main__':
    sys.exit(main())

A

from pip._internal import main
if __name__ == '__main__':
    sys.exit(main())
Shuai Liu
fuente
1
Trabajó en ubuntu 16.04
Sameera Kumarasingha el
Esta no es una buena idea. Como se menciona en otra respuesta de @RichardElkins: "La gente no debería perder el tiempo editando archivos instalados que no están destinados a ser modificados después de la instalación"
juergi
20

En Windows 10, utilicé los siguientes comandos para degradar pip:

python -m pip uninstall pip
python -m pip install pip==9.0.3

Esto también debería funcionar en Linux y Mac.

kiyah
fuente
1
Debería ser python -m pip install pip == 9.0.3
elelias
@elelias Oh, no me di cuenta de eso. ¡Gracias por decirme!
kiyah
1
Tenía que hacerlo python easy_install.py pip==9.0.3porque después de la primera línea, no se encontró pip.
Suzanne
3
Funciona en Linux y Mac también. Es una solución temporal hasta que pip / pip3 10 se arregle. La gente no debería perder el tiempo editando archivos instalados que no están destinados a ser modificados después de la instalación.
Richard Elkins
Tuve problemas de ruta después de la actualización, hice lo siguiente para que funcione. sudo python -m pip desinstalar pip && sudo apt install python-pip --reinstall
webjockey
10

Tuve el mismo problema, pero desinstalar y reinstalar con apt y pip no funcionó para mí.

Vi otra solución que presenta una manera fácil de recuperar la ruta pip3:

sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
Hamza Ali
fuente
1
Tenía Python 2.7, así que tuve que alterar el comando para que coincida con Python 2.7 sudo python -m pip desinstalar pip && sudo apt install python-pip --reinstall
webjockey
funciona perfectamente en Ubuntu pero creo que no va a funcionar en las ventanas
Zaki benz
8

Solucioné el problema reinstalando pip usando get-pip.py.

  1. Descargue get-pip desde el enlace oficial: https://pip.pypa.io/en/stable/installing/#upgrading-pip
  2. ejecutarlo utilizando commande: python get-pip.py.

Y pip es fijo y funciona perfectamente.

Bachir Mehemmel
fuente
1
Cambiar python get-pip-pya pythonget-pip.py
YourFriend
1
Funcionó perfectamente! Gracias.
Shambo
Me funcionó a mi también. Gracias
Abhishek Kishore
2

En MacOS si ha instalado Python a través de Homebrew, cambie la línea en /usr/local/opt/python/libexec/bin/pip

de

from pip.internal import main

a

from pip._internal import main

O use este único revestimiento: sed -i '' "s/from pip import main/from pip._internal import main/" /usr/local/opt/python/libexec/bin/pip

Explicación:

El problema es causado por los cambios en la versión 10 de pip moviendo el espacio de nombres interno main._internaly el script bin implementado por homebrew todavía lo mira desde el lugar anterior (donde solía estar en la versión 9). Problema y alguna discusión https://github.com/pypa/pip/issues/5240

Madis Nõmme
fuente
1

Si tiene un enlace rígido en su pip PATH(es decir, si tiene varias versiones de python instaladas) y luego actualiza pip, también puede encontrar este error.

La solución consiste en crear el enlace duro nuevamente. O incluso mejor, deje de usar enlaces duros y use enlaces suaves.

Martín De la Fuente
fuente
1
¿Cómo arreglar esto?
user_x
1

En Windows 10, tuve el mismo problema. PIP 19ya estaba instalado en mi sistema pero no aparecía. El error fue No Module Found.

python -m pip uninstall pip
python -m pip install pip==9.0.3

La degradación pipa 9.0.3 funcionó bien para mí.

Debu Shinobi
fuente
0

Para aquellos que tienen problemas similares al usar pip 10 con PyCharm, descargue la última versión aquí

Jacob Geryk
fuente
0

Funciona en ubuntu 16.04. Paso 1:

 sudo gedit /home/user_name/.local/bin/pip

se abre un archivo con el contenido:

#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from pip import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

Cambie maina __main__como aparece a continuación:

#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from pip import __main__

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(__main__._main())

Guarde el archivo y ciérrelo. Y ya está!

Anas Musah
fuente
0

prueba esto

#!/usr/bin/python
# 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.i
try:
    from pip import main
except ImportError:
    from pip._internal import main
if __name__ == '__main__':
    sys.exit(main())
Abdul Gaffar
fuente
0

Una solución simple que funciona con Ubuntu, pero también puede solucionar el problema en Windows:

Solo llama

pip install --upgrade pip
juergi
fuente
0

Esto resolvió mi problema en ubuntu 18.04 cuando intentaba usar python3.6:

rm -rf ~/.local/lib/python3.6

Puede mover la carpeta a otro lugar usando mv en lugar de eliminarla también, para probar:

mv ~/.local/lib/python3.6 ./python3.6_old
RDlady
fuente
0

Abre tu terminal de linux.

hash -d pip
Carlos Muñoz
fuente
Hola Carlos, bienvenido a Stack Overflow. Para ayudar a otros usuarios que enfrentan este problema, podría agregar a su respuesta para aclarar qué hace este comando y cómo soluciona el problema.
CyberJacob
0

En nuestro caso, en 2020 usando Python3, la solución a este problema fue mover la instalación de Python a cloud-init script de inicio que instanciaba la VM.

Habíamos encontrado este mismo error cuando habíamos intentado instalar Python usando scripts que fueron llamados por los usuarios más adelante en el ciclo de vida de la VM, pero al mover el mismo código de instalación de Python al cloud-initscript se eliminó este problema.

CodeMed
fuente