Що спричиняє ImportError: Жодного модуля з іменем pkg_resources після оновлення Python на OS X?


82

Я щойно оновив Python до 2.6.4 на своєму Mac. Я встановив з пакета dmg.

Двійковий , схоже, не правильно встановити мій шлях Python, так що я додав '/usr/local/lib/python2.6/site-packages'в.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']

Очевидно, це не всі необхідні шляхи, оскільки я не можу запустити 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`

Я робив пошуки в Google, і я не можу зрозуміти, як встановити pkg_resourcesабо переконатися, що він на шляху.

Що мені потрібно зробити, щоб це виправити?

Відповіді:


73

[UPDATE] TL; DR pkg_resourcesнадається або Distribute, або setuptools .

[UPDATE 2] Як було оголошено на PyCon 2013 року Distributeі setuptoolsпроекти мають знову об'єднані. Distributeзараз застаріло, і вам слід просто використовувати новий струм setuptools. Спробуйте це:

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

Або, краще, використовуйте струм pipяк інтерфейс високого рівня, який буде використовуватися setuptoolsпід ковдрами.

[Довша відповідь на конкретну проблему OP]:

Ви не кажете у своєму питанні, але я припускаю, що ви оновили Python, що постачається компанією Apple (2.5 на 10.5 або 2.6.1 на 10.6), або що ви оновили з python.org Python 2.5. У будь-якому з цих випадків важливим моментом є те, що кожен екземпляр Python має власну бібліотеку, включаючи власну бібліотеку пакетів сайтів, де встановлюються додаткові пакети. (І /usr/local/lib, до речі, жоден з них не використовує за замовчуванням.) Це означає, що вам потрібно буде встановити додаткові пакети, необхідні для вашого нового python 2.6. Найпростіший спосіб зробити це - спочатку переконатися, що новий python2.6 з’являється першим у вашому пошуку $PATH(тобто введення python2.6викликає його, як очікувалося); інсталятор python2.6 повинен був змінити ваш, .bash_profileщоб розмістити каталог фреймворків у передній частині $PATH. Потім встановіть easy_installза допомогоюsetuptools, дотримуючись інструкцій там. pkg_resourcesМодуль також автоматично встановлюється на цей крок.

Потім використовуйте нещодавно встановлену версію easy_install(або pip) для встановлення ipython.

easy_install ipython

або

pip install ipython

Він повинен автоматично встановитись у правильному site-packagesмісці для цього екземпляра python, і ви повинні бути готові до роботи.


Я заплутався, коли вчора ввечері намагався встановити setuptools. Я нехтував закінчити інсталяцію, запустивши файл .egg, ніби це був файл оболонки. $ sh setuptools-0.6c11-py2.6.egg Я думаю, це десь додало новий шлях Python.
BryanWheelock

ПРИМІТКА: Фактична відповідь, яка вирішила цю проблему для мене, була нижче - див. Stackoverflow.com/a/10538341/293064
Джей Тейлор,

Я трохи оновив цю стару відповідь, щоб зробити більш очевидним, що рішення полягає в тому, щоб або встановити, Distributeабо setuptools. Конкретні кроки були в посиланнях. Питання ОП охоплювало інші пункти.
Нед Дейлі,

Подальша редакція, щоб відобразити знецінення distributeна користь нового setuptoolsта згадати pip.
Нед Дейлі

1
отримання python ez_setup.py File "ez_setup.py", line 1 <!DOCTYPE html> ^ SyntaxError: invalid syntax:(
привіт, 15

76

Я зіткнувся з тим самим ImportError. Якось setuptoolsпакет був видалений в моєму середовищі Python.

Щоб вирішити проблему, запустіть сценарій встановлення для setuptools:

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

Якщо у вас є версія будь-якої версії distributeабо версія setuptoolsнижче 0,6, вам доведеться видалити її спочатку. *

Докладнішу інформацію див. В Інструкції з монтажу .


* Якщо у вас вже є робота distribute, оновити її до "обгортки сумісності", яка перемикає вас setuptools, простіше. Але якщо речі вже зламані, не намагайтеся цього робити.


3
Це правильний спосіб зробити це. Без pkg_resources, easy_installшвидше за все, також не буде працювати (тому easy_installі pipне зможе встановити setuptools).
Алекс Черчілль,

Власне, встановлення Distribute або setuptools - це те, що рекомендується прийнятою відповіддю. Я трохи оновив оригінальну відповідь, щоб зробити її більш очевидною. До речі, дещо небезпечно завантажувати та встановлювати щось із ненадійної URL-адреси, наприклад без попереднього вивчення вмісту файлу.
Нед Дейлі,

7

У разі оновлення вашого python на mac os 10.7 і pkg_resources не працює, найпростіший спосіб виправити це - просто перевстановити setuptools, як згадувалося вище Недом.

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

3

У моїй системі (OSX 10.6) цей пакет знаходиться на

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

Я сподіваюся, це допоможе вам зрозуміти, чи він відсутній чи просто не на вашому шляху.


1

Причиною може бути те, що модуль IPython відсутній у вашому PYTHONPATH.

Якщо ви завантажите IPython, а потім виконайте встановлення python setup.py

Налаштування не додає модуль IPython до вашого шляху python. Можливо, ви захочете додати його до свого PYTHONPATH вручну. Це має спрацювати після того, як ви зробите:

експортувати PYTHONPATH = / pathtoIPython: $ PYTHONPATH

Додайте цей рядок у свій .bashrc або .profile, щоб зробити його постійним.


0

Я усвідомлюю, що це не пов’язано з OSX, але у вбудованій системі (Beagle Bone Angstrom) у мене було точно таке ж повідомлення про помилку. Встановлення наступних пакетів ipk це вирішило.

opkg install python-setuptools
opkg install python-pip

0

Я отримав цю помилку в Ubuntu , і мені працювало наступне:

Видалено двійкові файли dropbox і завантажте їх знову, запустивши:

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

0

Я зіткнувся з такою ж проблемою, коли працюю над проектом, пов'язаним з автобаном.

1) Тож я завантажую форму setuptools.-0.9.8.tar.gz https://pypi.python.org/packages/source/s/setuptools/ і витягую її.

2) Тоді я отримую модуль pkg_resources і копіюю його в папку, де це було потрібно. ** у моєму випадку ця папка була C: \ Python27 \ Lib \ site-пакети \ autobahn


0

У моєму випадку пакет python-pygmentsбув пропущений. Виправити це можна за допомогою команди:

sudo apt-get install python-pygments

Якщо є проблема з pandoc. Вам слід встановити pandocі pandoc-citeproc.

sudo apt-get install pandoc pandoc-citeproc


0

Спробуйте це лише в тому випадку, якщо у вас все добре з видаленням python.

Я видалив python за допомогою

brew uninstall python

потім встановлений за допомогою

brew install python

тоді це спрацювало!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.