Не удается" sudo pip uninstall " операция не разрешена (/tmp) в OS X El Capitan

предисловие: моя установка OS X Python-это беспорядок. Я начал использовать системный Python, прежде чем узнал о Homebrew. И поэтому я использую sudo pip install С тех пор навсегда. Теперь я пытаюсь очистить все, а затем установить / связать пакеты pip с Python Homebrew.

1) во многих ответах SO люди предлагают делать:pip freeze | xargs sudo pip uninstall -y Это не работает для меня. У меня очень длинный след. Это наиболее репрезентативные куски это:

~ $ pip freeze | xargs sudo pip uninstall -y
You are using pip version 7.1.2, however version 8.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
The directory '/Users/smaniato/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Uninstalling altgraph-0.10.2:
Exception:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip/basecommand.py", line 211, in main
[...]
Error: [('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph/__init__.py', '/tmp/pip-p8yIlU-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph/__init__.py', "[Errno 1] Operation not permitted: '/tmp/pip-p8yIlU-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph/__init__.py'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph/__init__.pyc', '/tmp/pip-p8yIlU-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph/__init__.pyc',
[...]
"[Errno 1] Operation not permitted: '/tmp/pip-p8yIlU-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph'")]

здесь altgraph это только первый пакет PIP в pip list (имейте это в виду).

2) я тогда попробовал pip freeze | xargs sudo -H pip uninstall -y, как предлагалось в предупреждении, но это просто удалите предупреждение. Сообщения об ошибках сохраняются.

3) я также пробовал chown - ing любые каталоги, которые вызывали жалобы (например, ~/Library/Caches/pip и некоторые из родителей и детей). По какой-то причине я не могу chown самый проблемный каталог,/tmp:

~ $ sudo chown -R ${USER} /tmp
chown: /tmp: Operation not permitted

4) Наконец, я попытался вручную удалить пакет из далее по списку и вуаля, я мог бы легко сделать sudo pip uninstall virtualenv например. Попытка вручную удалить altgraph приводит к той же ошибке выше.

есть идеи, как действовать? Помните, меня не волнует ни один пакет; я просто хочу взорвать pip и начать с нуля, используя Python Homebrew. Спасибо!

обновления:

  1. спускаясь по списку вручную, то же самое случается с bdist-mpkg-0.5.0
  2. немного подробнее: matplotlib, zope.interface, xattr, six, scipy, pytz.

2 ответов


я почти уверен, что brew reinstall python как-то исправил кучу проблем, которые у меня были. Затем мне пришлось также сбросить ядерную бомбу (т. е.--1-->) в /usr/local/lib/python2.7/site-packages

проблема и ответ, связанные с моим конкретным случаем использования (установка ROS на OS X):https://github.com/mikepurvis/ros-install-osx/issues/11


Не используйте Homebrew ни MacPorts, ни встроенный Python. Это вложенные решения, которые в конечном итоге потерпят неудачу, так или иначе (PEP20: flat лучше, чем вложенные). По крайней мере, вам придется ждать, пока система управления пакетами заметит любые обновления PyPI или вернется к использованию pip Как вам бы сделал без менеджера пакетов. Используйте MacPorts для установки только элементов, не относящихся к Python, которые необходимо скомпилировать и настроить (например, ATLAS).

в самое простое, что нужно сделать, это установить автономный Python из python.org (либо из двоичного дистрибутива, либо из исходного кода). Нет!--3-->, установить под пользователем. Затем:

pip install -U pip setuptools virtualenvwrapper

источник ваш фантик от ~/.bashrc в их документы, и makevirtualenv foo. Все остальные работы будут выполняться в виртуальных средах. Если вы используете Python 3, то virtualenv является частью интерпретатора, поэтому вам не нужно virtualenvwrapper и маленький танец, связанный с ним.