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())
Funcionaba bien antes, no estoy seguro de por qué está arrojando este error. He buscado este error, pero no puedo encontrar nada para solucionarlo.
Avíseme si necesita más detalles, actualizaré mi pregunta.

pip install --upgrade pipactualizar pip en un servidor donde no tengo privilegios de administrador. Desinstalar pip conpython -m pip uninstall pipresuelto mi problema.Respuestas:
Debes haber actualizado inadvertidamente tu pip del sistema (probablemente a través de algo como
sudo pip install pip --upgrade)pip 10.x ajusta dónde están situadas sus partes internas. El
pip3comando que está viendo es uno proporcionado por el responsable del mantenimiento 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
Es probable que desee para no actualizar su sistema de pepita y en su lugar utilizar un virtualenv.
Para recuperar el
pip3binario necesitarás hacerlosudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall.Si desea continuar en un "territorio no admitido" (actualizar un paquete del sistema fuera del administrador de paquetes del sistema), probablemente pueda salirse con la suya en
python3 -m pip ...lugar de hacerlopip3.fuente
sudo apt install python3-pip --reinstallno solucionó el problema, sin embargo, puedo instalar el paquete usandopython3 -m pip. Gracias por tu ayuda. Lo estoy marcando como aceptado.sudo python -m pip uninstall pip && sudo apt install python-pip --reinstallpara python2!Podemos borrar el error modificando el archivo pip.
Verifique la ubicación del archivo:
Vaya a esa ubicación ( / usr / bin / pip ) y abra la terminal
Entrar:
$ sudo nano pipPuedes ver:
Cambiar a:
luego ctrl + o escribe los cambios y sale
Espero que esto haga !!
fuente
AttributeError: module 'pip.__main__' has no attribute 'main'pip3,main()se mueve apip._internal. La declaración de importación debe cambiarse afrom pip._internal import mainPara la familia Ubuntu, Debian, usuarios de 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 pipUbuntu / Debian pip v8.1.1 (16.04) del
python3-pippaquete debian (ver$ pip3 -V) muestra los mismos resultados de búsqueda que el último pip v10.0.1, e instala los últimos módulos de PyPI muy bien. Tiene unpipcomando de trabajo (ya en $ PATH), además de la buena--useropción parcheada por defecto desde 2016. Mirando las notas de lanzamiento de pip , las versiones más nuevas tratan principalmente de correcciones de errores específicas de casos de uso y ciertas nuevas características, por lo que no todo el mundo tiene que apresurarse a actualizar pip por el momento. 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 (incluidos 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 en Debian, un poco más antiguo pero no importa)Los nombres de los paquetes con el prefijo
python-son para Python 2; y con el prefijopython3-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 --useropción) o dentro de virtualenv / venv, apt podría ser lo que necesita. También se puede acceder a estos paquetes del sistema desde entornos virtuales, ya que virtualenv recurrirá con gracia al uso de las bibliotecas del sistema en la importación si sus entornos no han proporcionado copias de los módulos. Los--usermódulos por usuario instalados a medida (con pip )~/.local/libtambién los anularán.Tenga en cuenta que, dado que se trata de una instalación en 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 scipy o matplotlib), ya que APT realizará un seguimiento y proporcionará todas las bibliotecas del sistema y extensiones C requeridas, mientras que con pip no tiene tales garantías .
De hecho, para los paquetes de Python en todo el sistema (en contraste con el nivel de directorio de inicio o inferior por usuario), Ubuntu espera usar el administrador de paquetes APT (en lugar de
sudo pip) para evitar romper el sistema operativo:sudo pip3apunta al mismo/usr/lib/python3/dist-packagesdirectorio donde APT almacena el sistema operativo -módulos sensibles. Las versiones recientes de Debian / Ubuntu dependen en gran medida de Python 3, por lo que sus módulos preinstalados son administrados porapty no deben cambiarse.Entonces, si usa el
pip3 installcomando, asegúrese de que se ejecute en un entorno de desarrollo virtual aislado, como virtualenv (sudo apt install python3-virtualenv), o con Python3 incorporado (-m venv), o en un nivel por usuario (--useropción pip, predeterminada en Ubuntu) pip desde 2016), pero no en todo el sistema (sudo pip3¡ nunca !), porque pip interfiere con la operación del administrador de paquetes APT y puede afectar los componentes del sistema operativo Ubuntu cuando un módulo python utilizado por el sistema se cambia inesperadamente. ¡Buena suerte!P. S. Todo lo anterior es para la solución 'ideal' (estilo Debian / Ubuntu).
Si aún desea utilizar el nuevo pip3 v10 exclusivamente, hay 3 soluciones rápidas:
bash), y pip3 v10 estará disponible (consultepip3 -V). el pip3 v8 de debian permanece instalado pero está roto; o$ hash -d pip3 && pip3 -Vpara actualizar el nombre de ruta pip3 en $ PATH. el pip3 v8 de debian permanece instalado pero está roto; o$ sudo apt remove python3-pip && hash -d pip3para desinstalar Debian's pip3 v8 completamente, a favor de su nuevo pip3 v10.Nota: ¡Siempre tendrá que agregar una
--usermarca a cualquier pip no proporcionado por Debian, a menos que esté en un virtualenv! (implementa paquetes de python en~/.local/, por defecto, en python3-pip y python-pip proporcionados por debian / ubuntu desde 2016). Ubuntu / Debian no admite realmente el uso de pip 10 en todo el sistema, fuera de virtualenv. Nuncasudo pip3!Más detalles:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100
fuente
piplocalmente con--user, es decirsudo, sin , afecta mi capacidad de ejecutar el apt instaladopip? Pensé que los dos coexistirían. Pero como esta esencia muestra que el apt instalado se rompe después de que lo hagopython3 -m pip install --user --upgrade pip. No estoy buscando una solución, solo tengo curiosidad por entender lo que está sucediendo aquí./usr/bin/pip3lugar de la instalada como--user(~/.local/bin/pip*) según el sistema operativo $ PATH que todavía está configurado para ejecutar el versión del sistema del contenedor, pero no sus bibliotecas ..~/.local/lib/python3.?/site-packages/pipque tiene prioridad sobre el sistema apto en las importaciones relativas de Python (el sitio local del usuario tiene prioridad sobre las bibliotecas globales). Y debido a que el contenedorfrom pip import mainmás antiguo intenta en lugar defrom pip._internalsu__main__clase contra la versión más nueva del paquete pip, el comando pip desde el gist fallaImportError: cannot import name 'main'. Por lo tanto, ambos pips pueden coexistir (en el disco) pero la funcionalidad del sistema original estará "rota".--user.pip install --useres lo que hizo por mi (Tengo python 2.7, python 3.6 y python 3.7, todos instalados en Ubuntu 18.04 LTS.)resuelto en un solo paso.
Yo también enfrenté este problema, pero esto se puede resolver simplemente con 1 comando sin molestar y perder el tiempo y lo he probado en múltiples 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, simplemente puede instalar paquetes usando
pip3. para verificar el usopip3 --version.Para versiones anteriores, utilice:
sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall.Con esto, ahora puede simplemente instalar paquetes usando
pip. para verificar el usopip --version.fuente
Usar en
python -m pip installlugar depip installEjemplo:
El ejecutable
pip(resp.pip3) Lo proporciona su distribución (python-pippaquete en Ubuntu 16.04) y se encuentra en/usr/bin/pip.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:recorre 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
import, 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:El
/usr/bin/pip3archivo Ubuntu 18.04 hace:y presumiblemente
mainfue eliminado depipalgún punto que es lo que rompió las cosas.La confirmación de 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
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: /ubuntu/682869/how-do-i- install-a-different-python-version-using-apt-get / 1195153 # 1195153
fuente
Puede resolver este problema reinstalando pip.
Use uno de los siguientes comandos de línea de comandos para reinstalar pip:
Python2:
Python3:
fuente
Verifique si el pip se ha almacenado en caché en otra ruta, para hacerlo, llame a $ which pip y verifique que la ruta sea diferente de la solicitada en el error, si ese es el caso:
Cuando el caché está libre, pip volverá a funcionar. referencia: http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory
fuente
Estoy corriendo en un sistema donde tengo sudo apt pero no sudo pip. (Y sin acceso). Me metí en esta misma situación siguiendo los consejos de pip:
Ninguna de las otras soluciones funcionó para mí, porque no tengo suficientes privilegios de administrador. Sin embargo, algunas cosas me quedaron de leer sobre esto:
Entonces, encontré que esta línea de comando funciona para revertirme a donde estaba. Si estaba utilizando una versión diferente a la 8.1.1, obviamente querrá cambiar esa parte de la línea.
Eso es lo único que funcionó para mí, ¡pero funcionó perfectamente!
fuente
Recuperar con
python3 -m pip install --user pip==9.0.1(o la versión que funcionó)fuente
Lo mismo me sucedió en Pixelbook usando el nuevo LXC (strech). Esta solución es muy similar a la aceptada, con una sutil diferencia, que pip3 fijo para mí.
Eso golpeó la versión, y ahora funciona como se esperaba.
Lo encontré aquí ... Python.org: asegúrese de que pip esté actualizado
fuente
Encontré el mismo problema en mi sistema Ubuntu 16.04. Logré arreglarlo reinstalando pip con el siguiente comando:
curl https://bootstrap.pypa.io/get-pip.py | sudo python3fuente
Los comandos anteriores no funcionaron para mí, pero fueron muy útiles:
fuente
En ubuntu 18.04.1 Bionic Beaver, debe cerrar sesión y volver a iniciarla (no es necesario reiniciar) para obtener el entorno adecuado.
fuente
Yo uso
sudo apt remove python3-pipentoncespipfunciona.fuente
pipes para Python 2. OP utilizapip3, la versión de Python 3pip, que acaba de eliminar. Estos dos son distintos y no intercambiables.Para la versión 2.7 de Python, la solución @Anthony funciona perfectamente, cambiando python3 a python de la siguiente manera:
fuente
Lo que funcionó para mí para solucionar el error con el uso
pip3fue:sudo cp -v /usr/local/bin/pip3 /usr/bin/pip3Todo funciona:
¿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 enlazar simbólicamente los binarios de pepita de
/home/<user/.local/binque/usr/local/bino/usr/bin(dependiendo de su preferencia), de la siguiente manera:NOTA: reemplace
<user>con su usuario actual en ejecuciónLas versiones asociadas (más recientes) están en:
Versión 3.6:
/home/demon/.local/lib/python3.6/site-packages/pip (python 3.6)
Versión 2.7:
/home/demon/.local/lib/python2.7/site-packages/pip (python 2.7)
fuente
/usr/binembargo , no deberías meterte directamente con los archivos . Y, tuPATHestá mal si/usr/local/binno es antes/usr/bin./usr/local/bin. Solo está en/home/<user>/.local/biny / o/home/<user>/.local/lib/python<version>/site-packages/pipen las nuevas versiones (v10.0 + no actualice el binario/usr/bin). Por lo tanto, la razón por la que se debe crear una copia o un enlace simbólico del binario en/usr/bino/usr/local/bin(según las preferencias del usuario) para que pip se pueda ejecutar globalmente desde la línea de comandos.pipvalores binarios predeterminados a la última versión instalada en el sistemaTruco y funciona también
fuente
Tuve el mismo error, pero
python -m pipseguía funcionando, así que lo arreglé con la opción nuclearsudo python -m pip install --upgrade pip. Lo hizo por mi.fuente
Por lo que vale, tuve el problema con
pip(nopip2opip3):De alguna manera (no recuerdo cómo) tenía cosas de Python instaladas en mi
~/.localdirectorio. Después de eliminar el directorio pip desde allí,pipcomencé a trabajar nuevamente.fuente
Hay algo mal con los paquetes, cuando genera el archivo / usr / bin / pip, debe cambiar la importación:
a
Eso resuelve el problema, no estoy seguro de por qué se generó, pero dice algo en el siguiente problema:
Después de la actualización del pip 10 en pyenv "ImportError: no se puede importar el nombre 'main'"
fuente
Puedes probar esto:
fuente
También me encontré con este problema cuando quería actualizar el sistema
pippip3de 9.0.1 a 19.2.3.Después de ejecutarse
pip3 install --upgrade pip, lapipversión se convierte en 19.2.3. Peromain()se ha trasladado apip._internalla última versión, que dejapip3roto.Entonces en el archivo
/usr/bin/pip3, reemplaceline 9:from pip import mainconfrom pip._internal import main. El problema se solucionará, funciona igualpython2-pip. (Probado en la distribución Ubuntu 18.04)Según la respuesta de @Vincent H.
fuente
Ejecute los siguientes comandos para hacer la corrección. Después de ejecutar
python3 -m pip install --upgrade pip, ejecute el siguiente comando.Fuente: https://github.com/pypa/pip/issues/5221
fuente
simplemente puede arreglar las rutas pip y pip3 usando
update-alternativesLo primero que debe verificar es su
$PATHejecución actualecho $PATHy ver si puede encontrar/usr/local/bincuál es el lugar donde generalmente están pip3 y piphay un cambio que su sistema está buscando aquí
/bin/pipy/bin/pip3entonces diré que arregle la RUTA agregando~/.bash_profilearchivo para que persistaexport PATH=$PATH:/usr/local/biny luego verifica si está fijado conwhich pipywhich pip3si no, entonces utilízalo
update-alternativespara arreglarlo finalmentey si quieres apuntar pip a pip3 entonces
fuente
¡Esto funcionó para mí!
Ahora, desinstale la versión instalada de pip y vuelva a instalarla utilizando los siguientes comandos.
Si la pepita está rota, use:
¡Espero eso ayude!
fuente
import main desde pip._internal
Edite el código pip de
fuente
/usr/bin/pip3...Como dijo @cryptoboy: compruebe qué versión de pip / python ha instalado
y luego busque bibliotecas no necesarias en su carpeta .local / lib /.
Hice una copia de seguridad de la configuración cuando estaba migrando a Kubuntu más reciente y tenía la carpeta .local / lib / python2.7 / en mi directorio de inicio. Python instalado 3.6. Acabo de eliminar la carpeta anterior y ahora todo funciona muy bien.
fuente
En Debian necesitará actualizar apt primero ...
Si omite 'sudo apt-get update -qq', su pip se dañará y mostrará el error 'no se puede encontrar el principal'.
fuente
Este error puede ser de permiso. Entonces, pruebe ejecutar el comando con la bandera -H :
fuente
Use el siguiente comando antes de ejecutar cualquier comando pip
Funcionará
fuente