Pip se rompió. cómo reparar el error de DistributionNotFound?

146

Cada vez que intento usar pip me sale un error. Por ejemplo:

$ sudo pip install gevent-websocket

Traceback (most recent call last):  
File "/usr/local/bin/pip", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2675, in <module>
parse_requirements(__requires__), Environment()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 552, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pip==0.8.1

Me siento tentado a cambiar el valor de pip == 0.8.2 ... pero no me siento lidiando con las consecuencias de 'hackear' mi instalación ... Estoy ejecutando python 2.7 y pip está en la versión 0.8.2.

Stephan
fuente
Mucho si el dolor aquí. La solución genérica simple es descargar el pip instalado desde: https://bootstrap.pypa.io/get-pip.py y luego ejecutar ese archivo (usando python). Las otras soluciones dependen mucho del sistema y generalmente son desordenadas y las sugerencias a continuación a menudo no funcionan (según mi experiencia en dos niños diferentes del sistema)
GregD

Respuestas:

253

Encuentro este problema en mi MacBook, la razón es porque, como dijo @Stephan, solía easy_install instalar pip, y la combinación de ambas herramientas de administración de paquetes py condujo al pkg_resources.DistributionNotFoundproblema. La resolución es:

easy_install --upgrade pip

Recuerde: solo use una de las herramientas anteriores para administrar sus paquetes Py.

NewPtone
fuente
55
Ja esto solo me da el error:pkg_resources.DistributionNotFound: distribute==0.6.36
Timmmm
2
Funciona muy bien en Mac OS X 10.9 también. ¡Gracias!
Anton Babenko
2
Puede encontrar que a) necesita sudo easy_install --upgrade pip yb) luego puede obtener errores sobre wheel cuando usa pip. En ese punto, mira esto: stackoverflow.com/questions/20905350/…
mchicago
@PiotrDobrogost Estoy un poco en desacuerdo: el artículo que ha vinculado trata sobre el uso de virtualenv; de lo contrario, tiene una gran cantidad de paquetes y el rendimiento y los conflictos entre aplicaciones pueden ocurrir; en esta instancia, queremos usar virtualenv. Sin embargo, para instalar virtualenv, desea instalarlo globalmente para todos y, por lo tanto, sudo easyinstall. para la instalación virtualenv . lo que permite que virtualenv realmente funcione, entonces, ¿cómo instalar el entorno virtual sin hacer una instalación manual (y, por lo tanto, difícil de mantener)?
mchicago
1
tengo .. 'sudo easy_install3 --pupgrade pip' lo hizo
pavan
31

Reemplacé 0.8.1 en 0.8.2 en / usr / local / bin / pip y todo volvió a funcionar.

__requires__ = 'pip==0.8.2'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pip==0.8.2', 'console_scripts', 'pip')()
    )

Instalé pip a través de easy_install, lo que probablemente me causó este dolor de cabeza. Creo que así es como debes hacerlo hoy en día.

$ sudo apt-get install python-pip python-dev build-essential 
$ sudo pip install --upgrade pip 
$ sudo pip install --upgrade virtualenv
Stephan
fuente
13
Siempre trato de evitar instalar paquetes de python puros utilizando administradores de paquetes del sistema operativo, y le recomiendo que haga lo mismo. Ubuntu / Debian una vez rompió el paquete setuptools y causó algunos dolores de cabeza porque la gente no podía desinstalar paquetes usando pip (debido a sus cambios).
Hugo Tavares
¡usar apt o yum no es lo suficientemente agnóstico! Las estrategias en esta página son adecuadas para el desarrollo local, pero no haga esto para las implementaciones.
Ken
Lo mismo aquí, pip se suicidó al actualizar a 1.3.1 en una Mac, mientras que pip mencionó que todavía era 1.2.1 ...
Anthony Liekens
@PiotrDobrogost, vea el comentario anterior: es necesario en este caso para que virtualenv funcione.
mchicago
27

Tuve este problema cuando estaba usando homebrew. Aquí está la solución del número 26900

python -m pip install --upgrade --force pip
Louis Cremen
fuente
Puede ser útil intentarlo tanto con la opción --user como sin ella (la última requiere sudo).
Ray
11

Intente reinstalar con el script get-pip:

wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py

Esto proviene de la página pip Github, y funcionó para mí.

pavana
fuente
7

Si está en CentOS, asegúrese de tener instalado el paquete YUM "python-setuptools"

yum install python-setuptools

Me lo arregló.

Dave Lancea
fuente
6

La raíz del problema a menudo son scripts obsoletos en el subdirectorio bin(Linux) o Scripts(Windows). Explicaré esto usando el problema que me encontré como ejemplo.

Tenía instalada la versión 1.10 de virtualenv en mis paquetes de sitio de usuario (el hecho de que esté en paquetes de sitio de usuario no en paquetes de sitio de sistema es irrelevante aquí)

pdobrogost@host:~$ which virtualenv
/home/users/pdobrogost/.local/bin/virtualenv
pdobrogost@host:~$ virtualenv --version
1.10

Después de actualizarlo a la versión 1.11 recibí el siguiente error:

pdobrogost@host:~$ virtualenv --version  
Traceback (most recent call last):   
  File "/home/users/pdobrogost/.local/bin/virtualenv", line 5, in <module>
    from pkg_resources import load_entry_point   
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2701, in <module>
    return self.__dep_map   
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 572, in resolve
    if insert: 
pkg_resources.DistributionNotFound: virtualenv==1.10

El archivo /home/users/pdobrogost/.local/bin/virtualenvmencionado en el mensaje de error se veía así:

#!/opt/python/2.7.5/bin/python2.7
# EASY-INSTALL-ENTRY-SCRIPT: 'virtualenv==1.10','console_scripts','virtualenv'
__requires__ = 'virtualenv==1.10'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('virtualenv==1.10', 'console_scripts', 'virtualenv')()
    ) 

Allí, vemos que el virtualenvscript no se actualizó y aún requiere la versión 1.10 de virtualenv instalada previamente.
Ahora, reinstalando virtualenv como este

pdobrogost@host:~$ pip install --user --upgrade virtualenv
Downloading/unpacking virtualenv from https://pypi.python.org/packages/py27/v/virtualenv/virtualenv-1.11.1-py27-none-any.whl#md5=265770b61de41d34d2e9fdfddcdf034c
  Using download cache from /home/users/pdobrogost/.pip_download_cache/https%3A%2F%2Fpypi.python.org%2Fpackages%2Fpy27%2Fv%2Fvirtualenv%2Fvirtualenv-1.11.1-py27-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv
Cleaning up...

no ayuda (tampoco pip install --user --upgrade --force-reinstall virtualenv) porque el script no /home/users/pdobrogost/.local/bin/virtualenvse modifica.

La única forma en que pude solucionar esto fue eliminando manualmente los scripts virtualenv * de la /home/users/pdobrogost/.local/bin/carpeta e instalando virtualenv nuevamente. Después de esto, los scripts recién generados se refieren a la versión adecuada del paquete:

pdobrogost@host:~$ virtualenv --version
1.11
Piotr Dobrogost
fuente
6

Pude resolver esto así:

$ brew update
$ brew doctor
$ brew uninstall python
$ brew install python --build-from-source    # took ~5 mins
$ python --version                           # => Python 2.7.9
$ pip install --upgrade pip

Estoy corriendo con lo siguiente (a partir del 2 de enero de 2015):

OS X Yosemite
Version 10.10.1

$ brew -v
Homebrew 0.9.5

$ python --version
Python 2.7.9

$ ipython --version
2.2.0

$ pip --version
pip 6.0.3 from /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-6.0.3-py2.7.egg (python 2.7)

$ which pip
/usr/local/bin/pip
hernamesbarbara
fuente
5

Estaba enfrentando un problema similar en OSx. Mi stacktrace decía

raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: setuptools>=11.3

Entonces hice lo siguiente

sudo pip install --upgrade setuptools

Esto resolvió mi problema. Espero que alguien encuentre esto útil.

Nabin
fuente
1
Esto solucionó mi problema en Windows 10.
Mark Allen
1
Esto solucionó el problema para nosotros en CentOS 6.
Dan Phillimore
2

En Mac OS X (MBP), lo siguiente (tomado de otra respuesta encontrada aquí) resolvió mis problemas:

C02L257NDV33:~ jjohnson$ brew install pip
Error: No available formula for pip
Homebrew provides pip via: `brew install python`. However you will then
have two Pythons installed on your Mac, so alternatively you can:
    sudo easy_install pip
C02L257NDV33:~ jjohnson$ sudo easy_install pip

Claramente, la causa raíz aquí es tener un método secundario por el cual instalar python (en mi caso Homebrew). Con suerte, las personas responsables de la secuencia de comandos pip pueden remediar este problema, ya que aún es relevante 2 años después de ser informado por primera vez en Stack Overflow.

Joe Johnson
fuente
1

Tuve este problema porque instalé python / pip con un extraño ~/.pydistutils.cfgque no recordaba haber escrito. Lo eliminé, reinstalé (con pybrew) y todo estuvo bien.

polm23
fuente
1

En mi caso (problema de Sam, pero otros paquetes) no hubo dependencia de la versión. Una secuencia de desinstalación de pip e instalación de pip ayudó.

rhoerbe
fuente