Co powoduje ImportError: brak modułu o nazwie pkg_resources po aktualizacji Pythona w systemie OS X?

82

Właśnie zaktualizowałem Pythona do wersji 2.6.4 na moim Macu. Zainstalowałem z pakietu dmg.

Binarny nie wydają się prawidłowo ustawić moją drogę Pythona, więc dodałem '/usr/local/lib/python2.6/site-packages'w.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']

Najwyraźniej to nie wszystkie wymagane ścieżki, ponieważ nie mogę uruchomić iPythona.

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

Przeprowadziłem wyszukiwania w Google i naprawdę nie mogę dowiedzieć się, jak zainstalować pkg_resourceslub upewnić się, że jest na właściwej drodze.

Co muszę zrobić, aby to naprawić?

BryanWheelock
źródło

Odpowiedzi:

73

[UPDATE] TL; DR pkg_resourcesjest dostarczane przez Distribute lub Setuptools .

[UPDATE 2] Jak ogłoszono na PyCon 2013, projekty Distributei setuptoolszostały ponownie połączone. Distributejest teraz przestarzały i powinieneś po prostu użyć nowego aktualnego setuptools. Spróbuj tego:

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

Lub, lepiej, użyj prądu pipjako interfejsu wysokiego poziomu i który będzie używany setuptoolspod osłonami.

[Dłuższa odpowiedź na konkretny problem OP]:

Nie mówisz w swoim pytaniu, ale zakładam, że dokonałeś aktualizacji z Pythona dostarczonego przez Apple (2.5 w wersji 10.5 lub 2.6.1 w wersji 10.6) lub że dokonałeś aktualizacji z Pythona 2.5 z python.org. W każdym z tych przypadków ważne jest, aby każda instancja języka Python miała swoją własną bibliotekę, w tym własną bibliotekę pakietów lokacji, w której są instalowane dodatkowe pakiety. (Nawiasem /usr/local/libmówiąc, żaden z nich nie używa domyślnie). Oznacza to, że będziesz musiał zainstalować te dodatkowe pakiety, których potrzebujesz dla nowego Pythona 2.6. Najłatwiej to zrobić, jeśli najpierw upewnij się, że nowy python2.6 pojawia się jako pierwszy podczas wyszukiwania $PATH(to znaczy, wpisanie python2.6wywołuje go zgodnie z oczekiwaniami); Instalator pythona2.6 powinien zmodyfikować plik, .bash_profileaby umieścić katalog bin frameworka na początku $PATH. Następnie zainstaluj easy_installza pomocąsetuptools postępując zgodnie z instrukcjami tam zamieszczonymi. W pkg_resourcestym kroku moduł jest również automatycznie instalowany.

Następnie użyj nowo zainstalowanej wersji easy_install(lub pip), aby zainstalować ipython.

easy_install ipython

lub

pip install ipython

Powinien automatycznie zostać zainstalowany we właściwej site-packageslokalizacji dla tej instancji Pythona i powinieneś być gotowy.

Ned Deily
źródło
Zawiodłem wczoraj, kiedy próbowałem zainstalować Setuptools. Zignorowałem zakończenie instalacji, uruchamiając plik .egg tak, jakby był plikiem powłoki. $ sh setuptools-0.6c11-py2.6.egg Myślę, że to dodało gdzieś nową ścieżkę Pythona.
BryanWheelock
UWAGA: Rzeczywista odpowiedź, która rozwiązała ten problem, znajduje się poniżej - patrz stackoverflow.com/a/10538341/293064
Jay Taylor
Zaktualizowałem nieco tę starą odpowiedź, aby było bardziej oczywiste, że rozwiązaniem jest instalacja Distributelub setuptools. Konkretne kroki znajdowały się w linkach. Pytanie PO dotyczyło innych kwestii.
Ned Deily
Kolejna zmiana mająca na celu odzwierciedlenie wycofania distributena korzyść nowego setuptoolsi wspomnieć pip.
Ned Deily,
1
uzyskiwanie python ez_setup.py File "ez_setup.py", line 1 <!DOCTYPE html> ^ SyntaxError: invalid syntax:(
hi15
76

Spotkałem to samo ImportError. W jakiś sposób setuptoolspakiet został usunięty w moim środowisku Pythona.

Aby rozwiązać ten problem, uruchom skrypt instalacyjny dla setuptools:

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

Jeśli masz jakąkolwiek wersję distributelub wersję setuptoolsponiżej 0.6, musisz ją najpierw odinstalować. *

Więcej informacji można znaleźć w instrukcji instalacji .


* Jeśli masz już działający plik distribute, setuptoolsłatwiej jest go zaktualizować do „opakowania zgodności”, na który się przełączasz . Ale jeśli coś jest już zepsute, nie próbuj tego.

cwc
źródło
3
To jest właściwy sposób, aby to zrobić. Bez pkg_resources easy_installprawdopodobnie również nie będzie działać (więc easy_installi pipnie będzie można zainstalować setuptools).
Alex Churchill
Instalacja Distribute lub setuptools jest w rzeczywistości zalecaną przez zaakceptowaną odpowiedź. Zaktualizowałem nieco oryginalną odpowiedź, aby była bardziej oczywista. Przy okazji, pobieranie i instalowanie czegoś z niezabezpieczonego adresu URL, takiego jak ten, bez uprzedniego sprawdzenia zawartości pliku, jest nieco niebezpieczne.
Ned Deily,
7

W przypadku aktualizacji Pythona w systemie Mac OS 10.7 i pkg_resources nie działa, najprostszym sposobem naprawienia tego jest po prostu przeinstalowanie setuptools, jak wspomniano powyżej Ned.

sudo pip install setuptools --upgrade
or sudo easy_install install setuptools --upgrade
vutran
źródło
3

W moim systemie (OSX 10.6) ten pakiet ma adres

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

Mam nadzieję, że pomoże ci to ustalić, czy go brakuje, czy po prostu nie jest na twojej drodze.

Bryan McLemore
źródło
1

Przyczyną może być to, że moduł IPython nie znajduje się w PYTHONPATH.

Jeśli nie ładujesz IPythona, a następnie instalujesz python setup.py

Instalator nie dodaje modułu IPython do ścieżki języka Python. Możesz dodać go ręcznie do PYTHONPATH. Powinno zadziałać po wykonaniu:

eksportuj PYTHONPATH = / pathtoIPython: $ PYTHONPATH

Dodaj tę linię do swojego .bashrc lub .profile, aby stała się trwała.

Ben
źródło
0

Zdaję sobie sprawę, że nie jest to związane z OSX, ale w systemie wbudowanym (Beagle Bone Angstrom) otrzymałem dokładnie ten sam komunikat o błędzie. Instalacja następujących pakietów ipk rozwiązała problem.

opkg install python-setuptools
opkg install python-pip
Mark Lakata
źródło
0

Otrzymałem ten błąd na Ubuntu i działały u mnie:

Usunięto pliki binarne Dropbox i pobierz je ponownie, uruchamiając:

sudo rm -rf /var/lib/dropbox/.dropbox-dist
dropbox start -i
peeol
źródło
0

Napotkałem ten sam problem, gdy pracuję nad projektem związanym z autostradą.

1) Więc pobieram plik setuptools.-0.9.8.tar.gz https://pypi.python.org/packages/source/s/setuptools/ i rozpakowuję go.

2) Następnie pobieram moduł pkg_resources i kopiuję go do folderu, w którym jest potrzebny. ** w moim przypadku tym folderem był C: \ Python27 \ Lib \ site-packages \ autobahn

Nithila
źródło
0

W moim przypadku pakiet python-pygmentszostał pominięty. Możesz to naprawić poleceniem:

sudo apt-get install python-pygments

Jeśli jest problem z pandoc. Powinieneś zainstalować pandoci pandoc-citeproc.

sudo apt-get install pandoc pandoc-citeproc

khant
źródło
0

Spróbuj tego tylko wtedy, gdy możesz odinstalować Pythona.

Odinstalowałem Pythona za pomocą

brew uninstall python

później zainstalowany przy użyciu

brew install python

to zadziałało!

Bharath Pabba
źródło