Что вызывает 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

[ОБНОВЛЕНИЕ] TL; DR pkg_resourcesобеспечивается либо Распределить или 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 2.5 на python.org. В любом из этих случаев важным моментом является то, что каждый экземпляр Python имеет свою собственную библиотеку, включая собственную библиотеку пакетов сайтов, в которую устанавливаются дополнительные пакеты. (И /usr/local/lib, кстати, ни один из них не используется по умолчанию.) Это означает, что вам необходимо установить те дополнительные пакеты, которые вам нужны для вашего нового python 2.6. Самый простой способ сделать это - сначала убедиться, что новый python2.6 появляется первым в вашем поиске $PATH(то есть при вводе python2.6он вызывается должным образом); установщик python2.6 должен был изменить ваш, .bash_profileчтобы поместить его каталог bin фреймворка в начало $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 01
76

Я столкнулся с таким же ImportError. Каким-то образом setuptoolsпакет был удален в моей среде Python.

Чтобы устранить проблему, запустите сценарий установки для setuptools:

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

Если у вас установлена ​​какая-либо версия distributeили setuptoolsниже 0.6, вам необходимо сначала удалить ее. *

См. Инструкции по установке для получения дополнительной информации.


* Если у вас уже есть работающий distribute, обновить его до «оболочки совместимости», которая переключает вас на более setuptoolsпростой вариант. Но если что-то уже сломано, не пытайтесь это сделать.

cwc
источник
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-packages \ 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

тогда это сработало!

Бхарат Пабба
источник