web-dev-qa-db-fra.com

Python pip cassé après la mise à niveau d'OS X 10.8

Effectuez la mise à niveau vers Mac OS X 10.8 (Mountain Lion) et obtenez maintenant l'erreur suivante lorsque vous essayez d'appeler $ pip:

Traceback (most recent call last):
  File "/usr/local/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2603, in <module>
    working_set.require(__requires__)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 666, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 565, in resolve
    raise DistributionNotFound(req)  # XXX put more info here
pkg_resources.DistributionNotFound: pip==1.1

Mise à jour: J'ai essayé de réinstaller en recommençant la procédure d'installation (avec http://www.pip-installer.org/en/latest/installing.html#using-the-installer et easy_install), mais n'a pas fonctionné, a obtenu la même erreur.

J'ai essayé maintenant ce qui suit: Appeler $ Sudo pip et l'erreur ci-dessus disparaît. Il est étrange que les répertoires qui n'ont pas pu être trouvés dans le message d'erreur ci-dessus pointent vers/System/Library/... tandis que l'installation python est (nouvelle?) À trouver dans/Library/Frameworks/..:

$ which python
/Library/Frameworks/Python.framework/Versions/Current/bin/python

Une idée de comment vous débarrasser du sudo?

69
geo_so

Utilisation easy_install pour mettre à jour votre pip vers la dernière version:

Sudo easy_install -U pip

Assurez-vous également que le dernier XCode est installé (ver 4.4) avec Command Line Tools.

132
clwen

Ça marche pour moi

rm -f /usr/local/bin/easy_install
brew reinstall python
pip install --upgrade setuptools
pip install --upgrade pip
9
Thi

J'ai eu une erreur similaire, sauf que Sudo pip n'a pas fonctionné non plus. J'utilise une installation "brew" de python (qui est liée à/usr/local/bin) et j'ai constaté que le problème était que les shebangs dans les fichiers pip et easy_install étaient codés en dur sur #!/usr/bin/python au lieu de #!/usr/local/bin/python, tout comme le système python au lieu de la version brew).

À la vôtre, Tom

5
Tom Close

En fait, je ne pouvais pas faire ce qui avait été suggéré. Au lieu de cela, j'ai dû exécuter:

xcode-select --install

Ensuite, j'ai pu installer le module LDAP.

3
supreme Pooba

J'ai essayé toutes les réponses ici, de réinstaller easy_install pour installer une nouvelle version python, rien n'a fonctionné pour moi.

Ce que j'ai fait, c'est installer une nouvelle installation de Python dans le dossier/Library/Frameworks et un lien symbolique vers celui-ci depuis/usr/local/bin (pour une raison quelconque, mon système avait un lien symbolique depuis/Library/Frameworks /Python.framework vers /System/Frameworks/Python.framework). Mon idée était de conserver les fichiers/System/Library/Frameworks à utiliser par les commandes système dans/usr/bin, et d'avoir des points/usr/local/bin vers une autre installation "user land" dans/Library/Frameworks. Pour pouvoir faire ça :

  • renommer /System/Library/Framework/Python.framework en _OLD_Python.framework

  • supprimez tous les fichiers python dans/usr/local/bin (en utilisant Sudo rm/usr/local/bin/python *) et/usr/local/bin/pip * (mais ne touchez PAS/usr/bin )

  • Réinstallez python à partir du site officiel ( http://www.python.org/getit/ ) ==> Cela réinstallera python dans/Library/Framework et non/System/Library/Framework

  • Ensuite, lancez la commande Applications/Python/Update Shell Profile.command qui s'assurera que votre chemin utilise celui-là

  • Recréez ensuite les liens symboliques dans/usr/local/bin en utilisant

    ln -s ../../Library/Frameworks/Python.framework/Versions/2.7/bin/python python

  • Enfin, renommez le _OLD_Python.framework en Python.framework (car c'est le chemin d'accès/usr/bin/python vers)

Taper "quel python" doit pointer vers/Library/... et non/System/Library. De là, vous devriez pouvoir réinstaller easy_install et piper correctement.

2
Ben G

Sur Mavericks, j'ai trouvé que

ls -l `which python`
/usr/local/bin/python -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/python

tandis que pip a montré

ls -l `which pip`
/usr/local/bin/pip

J'ai renommé l'ancien pip et créé un lien symbolique vers le binaire pip approprié, et maintenant tout va bien. Ce n'est probablement pas la meilleure solution, mais cela fonctionne.

1
Sergio

J'ai résolu ce problème en réinstallant python avec homebrew: brew install python

1
Jesse Aldridge

Plutôt que de changer de propriétaire, il est possible de simplement changer les autorisations:

$ Sudo chmod -R o + rX /Library/Python/2.7/site.packages

1
Eric Mercer

J'ai généralement eu le même problème avec certains projets référençant bonjour-py dans leurs requirements.txt, je ne savais pas lequel ni comment le suivre pour le moment.

Et quelqu'un m'a dit que pip-tool. C'est en fait une excellente alternative pour identifier ce que vous avez et si vous souhaitez les mettre à jour. Et en prime, il a bien ignoré le bonjour-py Erreur.

0
Brice

J'ai changé les autorisations pour Python (de la racine à mon utilisateur), et maintenant tout fonctionne pour moi:

Sudo chown -R <your_user>:wheel /Library/Python/2.7/site-packages/

Non recommandé pour les machines avec plusieurs utilisateurs.

0
Daniel Pérez Rada