pip s'est cassé. comment réparer l'erreur DistributionNotFound?

146

Chaque fois que j'essaye d'utiliser pip, j'obtiens une erreur. Par exemple:

$ 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

Je me sens tenté de changer la valeur de en pip == 0.8.2 .. mais je ne me sens pas confronté aux conséquences du "piratage" de mon installation ... J'utilise python 2.7 et pip est en version 0.8.2.

Stéphan
la source
Beaucoup de douleur ici. La solution générique simple consiste à télécharger le pip installé à partir de: https://bootstrap.pypa.io/get-pip.py , puis à exécuter ce fichier (en utilisant python). Les autres correctifs sont très dépendants du système et généralement désordonnés et les suggestions ci-dessous ne fonctionnent souvent pas (d'après mon expérience sur deux enfants différents du système)
GregD

Réponses:

253

Je trouve ce problème dans mon MacBook, la raison en est que, comme @Stephan l'a dit, j'utilise easy_install pour installer pip, et le mélange des deux outils de gestion des packages py a conduit au pkg_resources.DistributionNotFoundproblème. La résolution est:

easy_install --upgrade pip

N'oubliez pas: utilisez simplement l' un des outils ci-dessus pour gérer vos packages Py.

NouveauPtone
la source
55
Ha cela me donne juste l'erreur:pkg_resources.DistributionNotFound: distribute==0.6.36
Timmmm
2
Fonctionne également très bien sur Mac OS X 10.9. Merci!
Anton Babenko
2
Vous pourriez constater que a) vous devez sudo easy_install --upgrade pip et b) vous pourriez alors obtenir des erreurs sur la roue lorsque vous utilisez pip. À ce stade, regardez ceci: stackoverflow.com/questions/20905350/…
mchicago
@PiotrDobrogost Je ne suis pas d'accord - l'article que vous avez lié concerne l'utilisation de virtualenv, sinon vous avez un bazillion de packages et des performances et des conflits entre les applications peuvent se produire - dans ce cas, nous voulons utiliser virtualenv. Cependant, pour installer virtualenv, vous souhaitez l'installer globalement pour tout le monde, et par conséquent, sudo easyinstall. pour l'installation de virtualenv . ce qui permet à virtualenv de fonctionner réellement, alors comment installer Virtual Env sans faire une installation manuelle (et donc difficile à maintenir).
mchicago
1
got .. 'sudo easy_install3 --upgrade pip' fait
pavan
31

J'ai remplacé 0.8.1 par 0.8.2 dans / usr / local / bin / pip et tout a fonctionné à nouveau.

__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')()
    )

J'ai installé pip via easy_install, ce qui m'a probablement causé ce mal de tête. Je pense que c'est ainsi que vous devriez le faire de nos jours.

$ sudo apt-get install python-pip python-dev build-essential 
$ sudo pip install --upgrade pip 
$ sudo pip install --upgrade virtualenv
Stéphan
la source
13
J'essaie toujours d'éviter d'installer des packages python purs à l'aide de gestionnaires de packages OS - et je vous recommande de faire de même. Ubuntu / Debian a une fois cassé le paquet setuptools et cela a causé quelques maux de tête parce que les gens ne pouvaient pas désinstaller les paquets à l'aide de pip (en raison de leurs modifications).
Hugo Tavares
utiliser apt ou yum n'est pas assez agnostique! les stratégies de cette page sont adaptées au développement local, mais veuillez ne pas le faire pour les déploiements.
ken le
Même chose ici, pip s'est tué lors de la mise à niveau vers la 1.3.1 sur un Mac, tandis que pip lui-même a mentionné qu'il était toujours 1.2.1 ...
Anthony Liekens
@PiotrDobrogost s'il vous plaît voir le commentaire ci-dessus - il est nécessaire dans ce cas pour faire fonctionner virtualenv.
mchicago
27

J'ai eu ce problème lorsque j'utilisais l'homebrew. Voici la solution du problème n ° 26900

python -m pip install --upgrade --force pip
Louis Cremen
la source
Il peut être utile d'essayer cela à la fois avec l'option --user et sans (cette dernière nécessitant sudo).
Ray
11

Essayez de réinstaller avec le script get-pip:

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

Cela provient de la page pip Github et a fonctionné pour moi.

Pavan
la source
7

Si vous êtes sur CentOS, assurez-vous que le package YUM "python-setuptools" est installé

yum install python-setuptools

Corrigé pour moi.

Dave Lancea
la source
6

La racine du problème est souvent des scripts obsolètes dans le sous-répertoire bin(Linux) ou Scripts(Windows). Je vais expliquer cela en utilisant le problème que je me suis rencontré à titre d'exemple.

J'ai installé la version 1.10 de virtualenv dans mes packages de site utilisateur (le fait qu'il se trouve dans des packages de site utilisateur et non dans des packages de site sytem n'est pas pertinent ici)

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

Après l'avoir mis à niveau vers la version 1.11, j'ai eu l'erreur suivante:

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

Le fichier /home/users/pdobrogost/.local/bin/virtualenvmentionné dans le message d'erreur ressemblait à ceci:

#!/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')()
    ) 

Là, nous voyons que le virtualenvscript n'a pas été mis à jour et nécessite toujours la version 1.10 de virtualenv précédemment installée.
Maintenant, réinstaller virtualenv comme ça

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...

n'aide pas (ni l'un ni l'autre pip install --user --upgrade --force-reinstall virtualenv) car le script /home/users/pdobrogost/.local/bin/virtualenvreste inchangé.

La seule façon de résoudre ce problème était de supprimer manuellement les scripts virtualenv * du /home/users/pdobrogost/.local/bin/dossier et de réinstaller virtualenv. Après cela, les scripts nouvellement générés se réfèrent à la version appropriée du package:

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

J'ai pu résoudre ceci comme ceci:

$ 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

Je cours avec les éléments suivants (à compter du 2 janvier 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
la source
5

J'étais confronté au même problème sous OSx. Mon stacktrace disait

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

Puis j'ai fait ce qui suit

sudo pip install --upgrade setuptools

Cela a résolu le problème pour moi. J'espère que quelqu'un trouvera cela utile.

Nabin
la source
1
Cela a résolu mon problème sous Windows 10.
Mark Allen
1
Cela a résolu le problème pour nous sur CentOS 6.
Dan Phillimore
2

Sur Mac OS X (MBP), ce qui suit (tiré d'une autre réponse trouvée ici) a résolu mes problèmes:

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

Clairement, la cause première ici est d'avoir une méthode secondaire par laquelle installer python (dans mon cas Homebrew). Espérons que les personnes responsables du script pip pourront remédier à ce problème car il est toujours d'actualité 2 ans après avoir été signalé pour la première fois sur Stack Overflow.

Joe Johnson
la source
1

J'ai eu ce problème car j'ai installé python / pip avec un étrange ~/.pydistutils.cfgque je ne me souvenais pas avoir écrit. Supprimé, réinstallé (avec pybrew) et tout allait bien.

polm23
la source
1

Dans mon cas (problème sam, mais autres packages), il n'y avait pas de dépendance de version. Une séquence de désinstallation et d'installation de pip a aidé.

rhoerbe
la source