python - paquetes - windows 10 no reconoce pip
Error después de actualizar pip: no se puede importar el nombre ''main'' (25)
Para la familia Ubuntu, Debian, usuarios de Linux Mint
Gracias a la explicación above 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
(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 un comando
pip
funciona (ya está en $ PATH), además de la agradable opción de
--user
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 novedades características, por lo que
no
todos tienen que apresurarse a actualizar pip por el momento.
Y, de todos modos, el nuevo pip 10 se puede implementar en Python virtualenvs.
Pero independientemente de los pips, su sistema operativo permite instalar rápidamente módulos comunes de Python (incluido numpy) con APT, sin la necesidad de pip, por ejemplo:
$ sudo apt install python3-numpy python3-scipy
(con dependencias del sistema)
$ sudo apt install python3-pip
(
$ sudo apt install python3-pip
parcheado en Debian, un poco más antiguo pero no importa)
Recordatorio rápido de sintaxis de apt (consulte
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 los 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
opción de
pip install --user
) 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.
Sus módulos personalizados por usuario (con pip
--user
) por usuario en
~/.local/lib
también los anularán.
Tenga en cuenta que, dado que se trata de una instalación en system-wide , 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
expects
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
pip3 install
, 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 de usuario (
--user
opción de usuario pip, predeterminado en pip proporcionado por Ubuntu desde 2016), pero
no en todo el
sistema (¡nunca
sudo pip3
!), porque pip
expects
con el funcionamiento del administrador de paquetes APT y puede afectar los
components
sistema operativo Ubuntu cuando El 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:
-
simplemente abra una nueva sesión de bash (una nueva pestaña de terminal o escriba
bash
), y pip3 v10 estará disponible (consultepip3 -V
). el pip3 v8 de debian permanece instalado pero está roto; o -
el comando
$ 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 -
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 necesitará agregar el indicador de
--user
a cualquier pip no proporcionado por Debian, a menos que esté en un virtualenv!
(implementa paquetes de python en
~/.local/
, por defecto en debian / ubuntu proporcionado por python3-pip y python-pip desde 2016).
Ubuntu / Debian no admite realmente el uso de pip 10 en todo el sistema, fuera de virtualenv.
Nunca
sudo pip3
!
Más detalles:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100
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.
importar principal desde pip._internal
hash -d pip
Edite el código pip de
from pip._internal import main
¡becarios! Tengo el mismo problema y lo resolví. Aquí está mi solución. Primero, cuando ejecuto pip install algo, el error salió así:
sudo nano /usr/bin/pip3
Entonces, cd en el archivo / usr / bin / y cat pip3 para ver el código en él. Veo esto en esto:
Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name ''main''
Y luego creo que no estaba en la ruta de instalación. Así que cd en el python3-pip, así:
#!/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())
ps: tienes que cd en las direcciones correctas en tu computadora. Luego busco el archivo para ver las diferencias (puedes usar otras operaciones para ver el código):
cd /.local/lib/python3.5/site-packages/pip
Y vi esto:
cat __main__.py
Entonces, ¿puedes ver la diferencia? Puedo darme cuenta de que tengo que hacer que el archivo sea el mismo que el 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ó.
ps: 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
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())
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.
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 comando
pip3
que está viendo es uno 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 querrá actualizar su pip del sistema y en su lugar usar un virtualenv.
Para recuperar el binario
pip3
necesitará
sudo 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
python3 -m pip ...
lugar de
pip3
.
En Debian necesitará actualizar apt primero ...
demon@UbuntuHP:~$ pip -V
demon@UbuntuHP:~$ pip2 -V
demon@UbuntuHP:~$ pip3 -V
Si omite ''sudo apt-get update -qq'', su pip se dañará y mostrará el error ''no se puede encontrar el principal''.
En ubuntu 18.04.1 Bionic Beaver, debe cerrar sesión y volver a iniciarla (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)
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
Este error puede ser de permiso. Entonces, pruebe ejecutar el comando con la bandera -H :
sudo apt-get update -qq
sudo apt-get install python-pip -qq
sudo pip install pip --upgrade --quiet
sudo pip2 install virtualenv --quiet
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:
Está utilizando pip versión 8.1.1, sin embargo, 18.0 está disponible. Debería considerar la actualización mediante el comando ''pip install --upgrade 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:
- No debería haber hecho esto. Claro, pip me dijo que lo hiciera. Mentía
- El uso de --user resuelve muchos problemas al centrarse en el directorio exclusivo para usuarios.
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.
python -m pip install --force-reinstall pip==8.1.1 --user
Eso es lo único que funcionó para mí, ¡pero funcionó perfectamente!
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í.
sudo python3 -m pip install --upgrade pip
Eso golpeó la versión, y ahora funciona como se esperaba.
Lo encontré aquí ... Python.org: asegúrese de que pip esté actualizado
Lo que funcionó para mí para solucionar el error al usar
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?
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 jupyter
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 --reinstall
Por 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)
Puede 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 --reinstall
Python3:
python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
Recuperar con
python3 -m pip install --user pip==9.0.1
(o la versión que funcionó)
Truco y funciona también
sudo -H pip install lxml
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 mi.
Use el siguiente comando antes de ejecutar cualquier comando pip
sudo -H pip3 install numpy
Funcionará
Verifique si pip se ha almacenado en caché en otra ruta, para hacerlo, llame a $ which pip y verifique que la ruta sea diferente de la que aparece en el error, si ese es el caso:
$ hash -r
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
Yo 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]
El error puede resolverse modificando el archivo pip
Verifique la ubicación del archivo:
$ which pip
ruta -> / usr / bin / pip
Vaya a esa ubicación
/usr/bin/pip
y abra una terminal.
Ingrese:
$ sudo nano pip
Puedes ver:
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 escribe los cambios y sale.
Espero que esto haga !!
Utilice
python -m pip install
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
sí mismo a medida que actualiza pip, y puede romperse.
Si solo usa
python -m pip
directamente, por ejemplo, como en:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
recorre su ruta de Python y encuentra la última versión de pip, y ejecuta ese archivo.
Se basa en el hecho de que ese 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 de Debian más pirateado.
Luego recomiendo agregar los siguientes alias a su
.bashrc
:
pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )
Probado en Ubuntu 16.04 después de una actualización de
pip3
9.0.1 a 18.0.
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 usar
pip3 --version
.
Para versiones anteriores, use:
sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall
.
Con esto, ahora puede simplemente instalar paquetes usando
pip
.
para verificar usar
pip --version
.