Was verursacht ImportError: Kein Modul mit dem Namen pkg_resources nach dem Upgrade von Python auf OS X?


82

Ich habe gerade Python auf meinem Mac auf 2.6.4 aktualisiert. Ich habe aus dem dmg-Paket installiert.

Die binäre schien es nicht zu meinem Python - Pfad richtig eingestellt, so fügte ich '/usr/local/lib/python2.6/site-packages'in.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']

Anscheinend sind das nicht alle erforderlichen Pfade, da ich iPython nicht ausführen kann.

$ 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`

Ich habe Google-Suchen durchgeführt und kann nicht wirklich herausfinden, wie ich sie installieren pkg_resourcesoder sicherstellen soll, dass sie auf dem Pfad sind.

Was muss ich tun, um dies zu beheben?

Antworten:


73

[UPDATE] TL; DR pkg_resourceswird entweder von Distribute oder von setuptools bereitgestellt .

[UPDATE 2] Wie bei PyCon 2013 angekündigt, die Distributeund setuptoolshaben Projekte wieder zusammengeführt. Distributeist jetzt veraltet und Sie sollten nur den neuen Strom verwenden setuptools. Versuche dies:

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

Oder verwenden Sie besser einen Strom pipals High-Level-Schnittstelle, der setuptoolsunter der Decke verwendet wird.

[Längere Antwort auf das spezifische Problem von OP]:

Sie sagen es in Ihrer Frage nicht, aber ich gehe davon aus, dass Sie ein Upgrade von Python (2.5 auf 10.5 oder 2.6.1 auf 10.6) oder ein Upgrade von python.org Python 2.5 durchgeführt haben. In jedem dieser Fälle ist es wichtig, dass jede Python-Instanz über eine eigene Bibliothek verfügt, einschließlich einer eigenen Site-Packages-Bibliothek, in der zusätzliche Pakete installiert werden. (Übrigens verwendet keiner von ihnen /usr/local/libstandardmäßig.) Das bedeutet, dass Sie die zusätzlichen Pakete installieren müssen, die Sie für Ihr neues Python 2.6 benötigen. Der einfachste Weg, dies zu tun, besteht darin, zunächst sicherzustellen, dass der neue Python2.6 zuerst bei Ihrer Suche angezeigt wird $PATH( dh, wenn Sie ihn eingeben, wird python2.6er wie erwartet aufgerufen ). Das Python2.6-Installationsprogramm sollte Ihr geändert haben .bash_profile, um das Framework-Bin-Verzeichnis an die Vorderseite von zu setzen $PATH. Dann installieren Sie easy_installmitsetuptools folgen den dortigen anweisungen . Das pkg_resourcesModul wird durch diesen Schritt ebenfalls automatisch installiert.

Verwenden Sie dann die neu installierte Version von easy_install(oder pip) zur Installation ipython.

easy_install ipython

oder

pip install ipython

Es sollte automatisch am richtigen site-packagesSpeicherort für diese Python-Instanz installiert werden und Sie sollten bereit sein, loszulegen .


Ich habe es vermasselt, als ich letzte Nacht versucht habe, Setuptools zu installieren. Ich habe es versäumt, die Installation abzuschließen, indem ich die .egg-Datei so ausgeführt habe, als wäre es eine Shell-Datei. $ sh setuptools-0.6c11-py2.6.egg Ich denke, das hat irgendwo den neuen Python-Pfad hinzugefügt.
BryanWheelock

HINWEIS: Die tatsächliche Antwort, die dieses Problem für mich behoben hat, war unten
Jay Taylor

Ich habe diese alte Antwort ein wenig aktualisiert, um deutlicher zu machen, dass die Lösung entweder die Installation Distributeoder setuptools. Die spezifischen Schritte waren in den Links. Die Frage des OP umfasste andere Punkte.
Ned Deily

Eine weitere Bearbeitung, um die Abwertung distributezugunsten des Neuen widerzuspiegeln setuptoolsund zu erwähnen pip.
Ned Deily

1
bekommen python ez_setup.py File "ez_setup.py", line 1 <!DOCTYPE html> ^ SyntaxError: invalid syntax:(
hi15

76

Ich bin dem gleichen begegnet ImportError. Irgendwie wurde das setuptoolsPaket in meiner Python-Umgebung gelöscht.

Führen Sie das Setup-Skript aus, um das Problem zu beheben für setuptools:

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

Wenn Sie eine Version von distributeoder setuptoolsunter 0.6 haben, müssen Sie diese zuerst deinstallieren. *

Weitere Informationen finden Sie in der Installationsanleitung .


* Wenn Sie bereits arbeiten distribute, setuptoolsist es einfacher , ein Upgrade auf den "Kompatibilitäts-Wrapper" durchzuführen, zu dem Sie wechseln. Aber wenn die Dinge schon kaputt sind, versuchen Sie das nicht.


3
Dies ist der richtige Weg. Ohne pkg_resources, easy_installfunktioniert wahrscheinlich auch nicht (so easy_installund pipnicht Setuptools installieren können).
Alex Churchill

Die Installation von Distribute oder Setuptools ist in der Tat die empfohlene Antwort. Ich habe die ursprüngliche Antwort ein wenig aktualisiert, um sie offensichtlicher zu machen. Übrigens ist es etwas gefährlich, etwas von einer solchen unsicheren URL herunterzuladen und zu installieren, ohne vorher den Inhalt der Datei zu untersuchen.
Ned Deily

7

Wenn ein Upgrade Ihres Python auf Mac OS 10.7 und pkg_resources nicht funktioniert, können Sie dies am einfachsten beheben, indem Sie setuptools wie oben erwähnt neu installieren.

sudo pip install setuptools --upgrade
or sudo easy_install install setuptools --upgrade

3

Auf meinem System (OSX 10.6) befindet sich dieses Paket unter

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

Ich hoffe, das hilft Ihnen herauszufinden, ob es fehlt oder nicht auf Ihrem Weg ist.


1

Der Grund könnte sein, dass sich das IPython-Modul nicht in Ihrem PYTHONPATH befindet.

Wenn Sie IPython nicht herunterladen und dann python setup.py installieren

Das Setup fügt das Modul IPython nicht zu Ihrem Python-Pfad hinzu. Möglicherweise möchten Sie es manuell zu Ihrem PYTHONPATH hinzufügen. Es sollte funktionieren, nachdem Sie Folgendes getan haben:

exportiere PYTHONPATH = / pathtoIPython: $ PYTHONPATH

Fügen Sie diese Zeile in Ihr .bashrc- oder .profile ein, um sie dauerhaft zu machen.


0

Mir ist klar, dass dies nicht mit OSX zusammenhängt, aber auf einem eingebetteten System (Beagle Bone Angstrom) hatte ich genau die gleiche Fehlermeldung. Die Installation der folgenden IPK-Pakete hat das Problem behoben.

opkg install python-setuptools
opkg install python-pip

0

Ich habe diesen Fehler unter Ubuntu erhalten und Folgendes hat bei mir funktioniert:

Entfernen Sie die Dropbox-Binärdateien und laden Sie sie erneut herunter, indem Sie Folgendes ausführen:

sudo rm -rf /var/lib/dropbox/.dropbox-dist
dropbox start -i

0

Ich hatte das gleiche Problem, als ich an einem Autobahnprojekt arbeitete.

1) Also lade ich das setuptools.-0.9.8.tar.gz-Formular https://pypi.python.org/packages/source/s/setuptools/ herunter und extrahiere es.

2) Dann hole ich mir das Modul pkg_resources und kopiere es in den Ordner, in dem es benötigt wird. ** In meinem Fall war dieser Ordner C: \ Python27 \ Lib \ site-packages \ autobahn


0

In meinem Fall wurde das Paket python-pygmentsverpasst. Sie können es durch Befehl beheben:

sudo apt-get install python-pygments

Wenn es ein Problem mit gibt pandoc. Sie sollten pandocund installieren pandoc-citeproc.

sudo apt-get install pandoc pandoc-citeproc

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.