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 pip
actualizar pip en un servidor donde no tengo privilegios de administrador. Desinstalar pip conpython -m pip uninstall pip
resuelto 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
pip3
comando 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
pip3
binario 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 --reinstall
no 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 --reinstall
para 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 pip
Puedes 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 main
Para 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 pip
Ubuntu / Debian pip v8.1.1 (16.04) del
python3-pip
paquete 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 unpip
comando de trabajo (ya en $ PATH), además de la buena--user
opció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 --user
opció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--user
módulos por usuario instalados a medida (con pip )~/.local/lib
tambié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 pip3
apunta al mismo/usr/lib/python3/dist-packages
directorio 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 porapt
y no deben cambiarse.Entonces, si usa el
pip3 install
comando, 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 (--user
opció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 -V
para 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 pip3
para desinstalar Debian's pip3 v8 completamente, a favor de su nuevo pip3 v10.Nota: ¡Siempre tendrá que agregar una
--user
marca 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
pip
localmente 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/pip3
lugar 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/pip
que 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 main
más antiguo intenta en lugar defrom pip._internal
su__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 --user
es 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 install
lugar depip install
Ejemplo:
El ejecutable
pip
(resp.pip3
) Lo proporciona su distribución (python-pip
paquete en Ubuntu 16.04) y se encuentra en/usr/bin/pip
.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: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/pip3
archivo Ubuntu 18.04 hace:y presumiblemente
main
fue eliminado depip
algú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
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: /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 python3
fuente
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-pip
entoncespip
funciona.fuente
pip
es 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
pip3
fue:sudo cp -v /usr/local/bin/pip3 /usr/bin/pip3
Todo 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/bin
que/usr/local/bin
o/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/bin
embargo , no deberías meterte directamente con los archivos . Y, tuPATH
está mal si/usr/local/bin
no es antes/usr/bin
./usr/local/bin
. Solo está en/home/<user>/.local/bin
y / o/home/<user>/.local/lib/python<version>/site-packages/pip
en 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/bin
o/usr/local/bin
(según las preferencias del usuario) para que pip se pueda ejecutar globalmente desde la línea de comandos.pip
valores binarios predeterminados a la última versión instalada en el sistemaTruco y funciona también
fuente
Tuve el mismo error, pero
python -m pip
seguí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
(nopip2
opip3
):De alguna manera (no recuerdo cómo) tenía cosas de Python instaladas en mi
~/.local
directorio. Después de eliminar el directorio pip desde allí,pip
comencé 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
pip
pip3
de 9.0.1 a 19.2.3.Después de ejecutarse
pip3 install --upgrade pip
, lapip
versión se convierte en 19.2.3. Peromain()
se ha trasladado apip._internal
la última versión, que dejapip3
roto.Entonces en el archivo
/usr/bin/pip3
, reemplaceline 9
:from pip import main
confrom 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-alternatives
Lo primero que debe verificar es su
$PATH
ejecución actualecho $PATH
y ver si puede encontrar/usr/local/bin
cuál es el lugar donde generalmente están pip3 y piphay un cambio que su sistema está buscando aquí
/bin/pip
y/bin/pip3
entonces diré que arregle la RUTA agregando~/.bash_profile
archivo para que persistaexport PATH=$PATH:/usr/local/bin
y luego verifica si está fijado conwhich pip
ywhich pip3
si no, entonces utilízalo
update-alternatives
para 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