web-dev-qa-db-fra.com

Quelle est la cause de ImportError: Aucun module nommé pkg_resources après la mise à niveau de Python sur os X?

Je viens de mettre à jour Python à la version 2.6.4 sur mon Mac. J'ai installé à partir du package dmg.

Le binaire ne semblait pas définir correctement mon chemin Python, alors j'ai ajouté '/usr/local/lib/python2.6/site-packages' dans .bash_profile

>>> pprint.pprint(sys.path)  
['',
'/Users/Bryan/work/Django-trunk', 
'/usr/local/lib/python2.6/site-packages',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python26.Zip',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-old',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages']

Apparemment, ce ne sont pas tous les chemins requis car je ne peux pas exécuter iPython.

$ ipython  
Traceback (most recent call last):  
  File "/usr/local/bin/ipython", line 5, in <module>  
  from pkg_resources import load_entry_point  
ImportError: No module named `pkg_resources`

J'ai effectué des recherches sur Google et je ne sais pas vraiment comment installer pkg_resources ou m'assurer qu'il est sur le chemin.

Que dois-je faire pour résoudre ce problème?

79
BryanWheelock

[UPDATE] TL; DR pkg_resources est fourni par Distribute ou setuptools

[MISE À JOUR 2] Comme annoncé lors de la PyCon 2013, les projets Distribute et setuptools ont été fusionnés. Distribute est maintenant obsolète et vous devriez simplement utiliser la nouvelle setuptools actuelle. Essaye ça:

curl -O https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
python ez_setup.py

Ou, mieux, utilisez un pip actuel comme interface de haut niveau et qui utilisera setuptools sous les couvertures.

[Réponse plus longue au problème spécifique de OP]:

Vous ne dites pas dans votre question mais je suppose que vous avez mis à niveau à partir de Python fourni par Apple (2.5 sur 10.5 ou 2.6.1 sur 10.6) ou que vous avez mis à niveau à partir de Python 2.5 python.org. Dans tous les cas, l’important est que chaque instance Python possède sa propre bibliothèque, y compris sa propre bibliothèque site-packages, où sont installés des packages supplémentaires. (Et d'ailleurs, aucun d'entre eux n'utilise /usr/local/lib par défaut, en passant.) Cela signifie que vous devrez installer les packages supplémentaires dont vous avez besoin pour votre nouveau python 2.6. Pour ce faire, le moyen le plus simple consiste à s’assurer d’abord que le nouveau python2.6 apparaît en premier sur votre recherche $PATH (c’est-à-dire que taper python2.6 l’invoque comme prévu); le programme d'installation de python2.6 devrait avoir modifié votre .bash_profile pour placer son répertoire bin de framework au début de $PATH. Puis installez easy_install en utilisant setuptools en suivant les instructions. Le module pkg_resources est également installé automatiquement à cette étape.

Utilisez ensuite la version nouvellement installée de easy_install (ou pip) pour installer ipython.

easy_install ipython

ou

pip install ipython

Il devrait automatiquement s'installer à l'emplacement correct site-packages pour cette instance python et vous devriez être prêt à partir.

73
Ned Deily

J'ai rencontré la même ImportError. D'une manière ou d'une autre, le package setuptools avait été supprimé de mon environnement Python.

Pour résoudre le problème, exécutez le script d'installation pour setuptools:

curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python

Si vous avez une version de distribute , ou une setuptools inférieure à 0.6, vous devrez d'abord la désinstaller. *

Voir Instructions d'installation pour plus de détails.


* Si vous avez déjà une distribute fonctionnelle, il est plus facile de la mettre à niveau vers le "wrapper de compatibilité" qui vous permet de passer à setuptools Mais si les choses sont déjà cassées, n'essayez pas cela.

76
cwc

Si la mise à niveau de votre python sous Mac OS 10.7 et que pkg_resources ne fonctionne pas, le moyen le plus simple de résoudre ce problème consiste à réinstaller setuptools comme indiqué par Ned ci-dessus.

Sudo pip install setuptools --upgrade
or Sudo easy_install install setuptools --upgrade
7
vutran

Sur mon système (OSX 10.6), ce paquet est à 

/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py

J'espère que cela vous aidera à déterminer s'il manque ou si vous ne le faites pas.

3
Bryan McLemore

La raison peut être que le module IPython n'est pas dans votre PYTHONPATH.

Si vous ne téléchargez pas IPython puis faites Installation de python.py 

La configuration n’ajoute pas le module IPython à votre chemin python. Vous voudrez peut-être l’ajouter manuellement à votre PYTHONPATH. Cela devrait fonctionner après vous:

export PYTHONPATH =/pathtoIPython: $ PYTHONPATH

Ajoutez cette ligne dans votre fichier .bashrc ou .profile pour la rendre permanente.

1
Ben

J'ai rencontré le même problème lorsque je travaille sur un projet lié à l'autobahn. 

1) Je télécharge donc le formulaire setuptools.-0.9.8.tar.gz https://pypi.python.org/packages/source/s/setuptools/ et l'extrais. 

2) Ensuite, je récupère le module pkg_resources et le copie dans le dossier où il le fallait. ** dans mon cas, ce dossier était C:\Python27\Lib\site-packages\autobahn

0
Nithila

Dans mon cas, le paquet python-pygments a été oublié. Vous pouvez le réparer avec la commande suivante:

Sudo apt-get install python-pygments

S'il y a un problème avec pandoc. Vous devriez installer pandoc et pandoc-citeproc.

Sudo apt-get install pandoc pandoc-citeproc

0
fluke-ng

J'ai eu cette erreur sur Ubuntu , et ce qui suit a fonctionné pour moi:

Supprimez les fichiers binaires de la boîte de dépôt et téléchargez-les à nouveau en exécutant:

Sudo rm -rf /var/lib/dropbox/.dropbox-dist
dropbox start -i
0
peeol

Je réalise que ce n'est pas lié à OSX, mais sur un système embarqué (Beagle Bone Angstrom), j'avais exactement le même message d'erreur. L'installation des paquets ipk suivants a résolu le problème.

opkg install python-setuptools
opkg install python-pip
0
Mark Lakata