Я пытаюсь обновить инструменты настройки. Ну, на самом деле я пытаюсь обновить доступ, но он пытается обновить инструменты установки и терпит неудачу. Попытка сделать это самому тоже не удалась. Даже попытка удалить его не удалась
$ sudo -H pip install --upgrade setuptools
Collecting setuptools
Using cached setuptools-18.4-py2.py3-none-any.whl
Installing collected packages: setuptools
Found existing installation: setuptools 1.1.6
Uninstalling setuptools-1.1.6:
Exception:
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg/pip/basecommand.py", line 211, in main
status = self.run(options, args)
File "/Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg/pip/commands/install.py", line 311, in run
root=options.root_path,
File "/Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg/pip/req/req_set.py", line 640, in install
requirement.uninstall(auto_confirm=True)
File "/Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg/pip/req/req_install.py", line 716, in uninstall
paths_to_remove.remove(auto_confirm)
File "/Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg/pip/req/req_uninstall.py", line 125, in remove
renames(path, new_path)
File "/Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg/pip/utils/__init__.py", line 315, in renames
shutil.move(old, new)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 299, in move
copytree(src, real_dst, symlinks=True)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 208, in copytree
raise Error, errors
Error: [('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib'")]
Я не имею ни малейшего представления, что случилось. Просматривая все файлы внутри /System/Library/Frameworks/Python.framework/Versions/2.7/
и ниже, каждый файл принадлежитroot:wheel
Как я могу это исправить?
sudo
. См. Этот вопрос . Я еще не нашел времени заниматься этим.--user
Возможность пип, вероятно , что я бы смотреть. Если найдете практическое решение "обновить" все, поделитесь пожалуйста!ipdb
ошибку, связанную сsetuptools
. Обновление средств настройки не работает. Он работает,--user=python
но до сих пор не исправляет ошибку ipdb.Ответы:
Это происходит из-за защиты целостности системы, представленной в OS X El Capitan.
Добавление
--user python
в команду позволило этому сработать.Другими словами
источник
pip
(в отличие отeasy_install
) не требует sudo, поскольку вы позволяете ему использоватьpython
пользователя, я убедился, что он работает.csrutil disable
. Перезагрузитесь, а после обновления перезагрузитесь в режим восстановления и войдитеcsrutil enable
. После перезагрузки у меня ipython продолжал нормально работать.Collecting setuptools Using cached setuptools-28.2.0-py2.py3-none-any.whl Requirement already up-to-date: python in /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload Installing collected packages: setuptools Successfully installed setuptools-1.1.6
Обзор
Проблема заключается в конфликте библиотек Python в сочетании с системой защиты целостности системы (SIP) в Mac OS, которая защищает системные библиотеки Python.
На мой взгляд, лучшим решением является удаление и повторная установка вашей собственной установки Python и сохранение ее отдельно от библиотек Python, предоставляемых Mac OS, которые защищены SIP.
Я предпочитаю отключать SIP, так как ожидаю, что SIP будет частью любых будущих выпусков Mac OS, и SIP здесь не является причиной, он просто обнажает проблему конфликта библиотек Python.
Детали
У меня также была эта проблема при установке ansible.
Моя проблема началась, когда я выполнил инструкции по установке ansible для Mac OS, которые заключаются в установке через pip и установке pip,
easy_install
как описано в последних выпусках через PipПроблема в том, что при установке pip таким образом,
easy_install
это Mac OS, предоставленная поeasy_install
адресу,/usr/bin/easy_install
но она записывает вeasy-install.pth
файл по адресу,/Library/Python/2.7/site-packages/easy-install.pth
и этот файл ссылается на библиотеки Python, предоставленные Mac OS.Последующая установка ansible с
pip install ansible
затем сообщает, что требование setuptools удовлетворяется Mac OS, предоставленной библиотекой Python в/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
Ansible, требует setuptools, но не указывает версию. Другой зависимый пакет, paramiko, требует setuptools> = 11.3, но, похоже, это не проверяется при установке ansible через pip. Когда вы пытаетесь запустить ansible, он жалуется, что инструменты установки 1.1.6. Это версия setuptools, поставляемая с Mac OS, и теперь она защищена SIP, поэтому ее нельзя обновить.
Вместо того, чтобы отключать SIP, я исправил это, удалив свой локальный Python, как намекал на https://docs.python.org/2.7/using/mac.html#getting-and-installing-macpython, а затем снова загрузил и установил.
Если вас беспокоит rm, вы можете вместо этого mv
Чтобы удалить, я сделал
sudo rm -rf /Library/Python sudo rm -rf /Applications/Python\ 2.7/ sudo rm /usr/local/bin/ansible # executable sudo rm /usr/local/bin/python* # symlinks to /Library/Python/2.7 sudo rm /usr/local/bin/easy_install* # and so on for references to /Library/Python/2.7 in /usr/local/bin
Затем я загрузил установочный пакет 2.7.13 для Mac OS X с https://www.python.org/downloads/ и установил его.
Это установило локальный python и pip at
/Library/Frameworks/Python.framework/Versions/2.7
и символические ссылки,/usr/local/bin
а также добавило/Library/Frameworks/Python.framework/Versions/2.7
к моему $ PATH. Это хранит все отдельно от библиотек, предоставляемых Mac OS,/System/Library/Frameworks/Python.framework
и/usr/bin
поэтому я получаюwhich pip /Library/Frameworks/Python.framework/Versions/2.7/bin/pip
Затем я установил ansible с помощью
pip install ansible
Then, когда я запускаю,
which ansible
я получаю/Library/Frameworks/Python.framework/Versions/2.7/bin/ansible
И в
pip list
setuptools (28.8.0) six (1.10.0)
и ansible теперь работает для меня, потому что библиотеки Python Mac OS не упоминаются при новой установке.
Обратите внимание, что из-за того, что установщик установил $ PATH,
which python
теперь/Library/Frameworks/Python.framework/Versions/2.7/bin/python
и/usr/local/bin/python
является символической ссылкой на него.Если вам нужен системный Python, вам придется использовать / usr / bin / python или изменить $ PATH
источник
Ответ заключается в том, что вы не можете обновить setuptools в OSX для заводского питона, поставляемого с ОС. Причина в том, что файлы
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
не могут быть удалены или изменены пользователем. Не только обычный пользователь, но даже если у вас есть права root, вы не сможете изменять эти файлы.Конечно, вы можете использовать различные другие методы для установки более новой версии setuptools, но это не переопределит системный пакет по умолчанию. Это означает, что если вы пойдете по предложенному маршруту использования
--user python
флага или решите установить их без root~/Library
, они не переопределят версию системных файлов.Причина, по которой вы или root не можете изменить системные настройки по умолчанию, связана с ограничениями разрешений SIP в El Capitan +. Вы можете отключить SIP, но обычно это не рекомендуется.
Вместо этого единственное разумное решение - использовать python virtualenv.
источник