Python сократился после обновления OS X 10.8

Сделал обновление до Mac OS X 10.8 (Mountain Lion) и получил следующую ошибку при попытке вызвать $ pip:

Traceback (most recent call last):
  File "/usr/local/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2603, in <module>
    working_set.require(__requires__)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 666, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 565, in resolve
    raise DistributionNotFound(req)  # XXX put more info here
pkg_resources.DistributionNotFound: pip==1.1

Обновление: попробовал переустановить, выполнив процедуру установки еще раз (с http://www.pip-installer.org/en/latest/installing.html#using-the-installer и easy_install), но не работал, получил ту же ошибку.

Теперь пробовал следующее: Вызов $ sudo pip и ошибка выше. Странно, что каталоги, которые не могли быть обнаружены в приведенном выше сообщении об ошибке, указывают на /System/Library/..., в то время как установка python (new?) Находится в /Library/Frameworks/..:

$ which python
/Library/Frameworks/Python.framework/Versions/Current/bin/python

Любая идея, как избавиться от sudo?

Ответ 1

Используйте easy_install для обновления pip до последней версии:

sudo easy_install -U pip

Также убедитесь, что у вас установлена ​​последняя XCode (версия 4.4) с Command Line Tools.

Ответ 2

Это работает для меня

rm -f /usr/local/bin/easy_install
brew reinstall python
pip install --upgrade setuptools
pip install --upgrade pip

Ответ 3

У меня была аналогичная ошибка, за исключением того, что sudo pip тоже не работал. Я использую установку "brew" python (которая символически связана с /usr/local/bin ) и обнаружила, что проблема заключается в том, что shebangs в файлах pip и easy_install были жестко закодированы до #!/usr/bin/python вместо #!/usr/local/bin/python, и поэтому использовала версию python для системы вместо версии brew.

Cheers, Том

Ответ 4

На самом деле я не мог сделать то, что было предложено. Вместо этого я должен был выполнить:

xcode-select --install

Затем мне удалось установить модуль ldap.

Ответ 5

Я попробовал все ответы здесь, переустановил easy_install для установки новой версии python, для меня ничего не работало.

Я установил новую установку Python в папку /Library/Frameworks и символически привязал ее к /usr/local/bin (по какой-то причине моя система имела символическую ссылку из /Library/Frameworks/Python. framework для /System/Frameworks/Python.framework). Моя идея состояла в том, чтобы файлы /System/Library/Frameworks использовались системными командами в /usr/bin, а/usr/local/bin указывали на установку "пользовательской земли" в /Library/Frameworks. Для этого:

  • переименовать/System/Library/Framework/Python.framework в _OLD_Python.framework

  • удалить каждый файл python в /usr/local/bin (используя sudo rm/usr/local/bin/python *) и /usr/local/bin/pip * (но НЕ касайтесь /usr/bin )

  • Переустановите python с официального сайта (http://www.python.org/getit/) == > Это переустановит python в /Library/Framework, а не /System/Library/Framework

  • Затем запустите команду Profile/Python/Update Shell Profile.command, которая будет гарантировать, что ваш путь использует этот

  • Затем заново создайте символические ссылки в /usr/local/bin, используя

    ln -s../../Library/Frameworks/Python.framework/Versions/2.7/bin/python python

  • Завершите, переименуйте _OLD_Python.framework обратно в Python.framework(потому что указывает путь /usr/bin/python )

Ввод "какой питон" должен указывать на /Library/... и not/System/Library. Оттуда вы сможете правильно установить easy_install и pip.

Ответ 6

Вместо изменения права собственности можно просто изменить разрешения:

$sudo chmod -R o + rX/Library/Python/2.7/site.packages

Ответ 7

В Mavericks я обнаружил, что

ls -l `which python`
/usr/local/bin/python -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/python

в то время как пип показал

ls -l `which pip`
/usr/local/bin/pip

Я переименовал старый pip и создал символическую ссылку на правильный бинарный файл, и теперь все хорошо. Это, вероятно, не лучшее решение, но оно работает.

Ответ 8

Я исправил это, переустановив python с homebrew: brew install python

Ответ 9

Я изменил разрешения для папки Python (от root до моего пользователя), и теперь все работает для меня:

sudo chown -R <your_user>:wheel /Library/Python/2.7/site-packages/

Не рекомендуется для машин с несколькими пользователями.

Ответ 10

У меня обычно была такая же проблема с некоторым ссылкой на проект bonjour-py в их requirements.txt, не знал, какой или как отслеживать этот на данный момент.

И кто-то сказал мне, что pip-tool. Это действительно отличная альтернатива для определения того, что у вас есть, и если вы хотите их обновить. И в качестве бонуса он хорошо проигнорировал ошибку bonjour-py.