OSX El Capitan: sudo pip install OSError: [Errno: 1] Операция не разрешена

Когда я бегу:

sudo pip install ipython

Я получаю следующую ошибку

OSError: [Errno: 1] Операция не разрешена: '/System/Library/Frameworks/Python.framework/Versions/2.7/share'

Последняя выполненная команда пытается создать каталог, указанный выше.

Кроме того, следующая команда не может установить iPython без каких-либо ошибок.

sudo pip install --user python

(Я работаю в Mac OS X El Capitan, если другие пользователи этой ОС увидят ту же проблему.)

Ответ 1

Инструкции, описывающие sudo pip install, по своей сути неправильны.

Если есть какой-либо учебник, в котором говорится, что вы должны сделать sudo pip, пожалуйста, сообщите об ошибке в отношении этого пакета. Автор разочаровывает сообщество Python, поскольку время доказало, что sudo pip является нарушенной практикой.

OSX El Capitan внедрил механизмы предотвращения повреждения файлов операционной системы. /System/Library/Frameworks/Python.framework/Versions/2.7/share является одним из защищенных мест. У обычного пользователя нет причин помещать или писать какие-либо файлы там. Это связано с тем, что сама операционная система полагается на эти файлы, а sudo pip со всей силой, указанной выше, безоговорочно перезаписывает их. Обычно плохих вещей не бывает, но шансов нет. Apple хочет защитить своих пользователей ОС от случайной порчи их установки.

Вместо этого вам необходимо установить пакет Python, например IPython, локально в домашнюю папку вашего пользователя. Самый простой способ - создать виртуальную среду, активировать ее, а затем запустить pip в виртуальной среде.

Пример:

cd ~  # Go to home directory
virtualenv my-venv
source my-venv/bin/activate
pip install IPython

Дополнительная информация

В качестве альтернативы нужно иметь возможность pip install --user. Но опять же, не требуется sudo, и вам нужно вручную настроить переменную среды PATH.

Ответ 2

У меня были те же проблемы, но с помощью easy_install "module" я решил проблему для меня.

Я не уверен, почему, но pip и easy_install используют разные места установки, а easy_install выбрали правильные.

Изменить: без повторной проверки, но из-за комментариев; кажется, что разные (OSX и brew -установленные) установки мешают друг другу, поэтому именно упомянутые инструменты действительно указывают на разные местоположения (поскольку они принадлежат разным установкам). Я понимаю, что обычно эти инструменты из одной точки установки в одну и ту же папку.

Ответ 4

pip install --ignore-installed six

Это выполнит задание, затем вы можете попробовать свою первую команду.

Через http://github.com/pypa/pip/issues/3165

Ответ 5

Вместо этого использовал pip3 install <package> и решил проблему разрешения с помощью pip.

Ответ 6

У меня были те же проблемы. Как отмечали другие, не запускайте pip install с sudo. Run

brew doctor 

и исправить предупреждения, и вы сможете продолжить установку своего пакета.

Ответ 7

Такая же ошибка

Installing collected packages: six, pyparsing, packaging, appdirs, setuptools
Exception:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_set.py", line 784, in install
    **kwargs
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_install.py", line 851, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_install.py", line 1064, in move_wheel_files
    isolated=self.isolated,
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/wheel.py", line 345, in move_wheel_files
    clobber(source, lib_dir, True)
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/wheel.py", line 323, in clobber
    shutil.copyfile(srcfile, destfile)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 83, in copyfile
    with open(dst, 'wb') as fdst:
IOError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/six.py'

и здесь я использую --user без sudo для решения этой проблемы

$ pip install --user scikit-image h5py keras pygame
Collecting scikit-image
  Downloading http://mirrors.aliyun.com/pypi/packages/65/69/27a1d55ce8f77c8ac757938707105b1070ff4f2ae47d2dc99461bfae4491/scikit_image-0.13.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (28.1MB)
    100% |████████████████████████████████| 28.1MB 380kB/s
Collecting h5py
  Downloading http://mirrors.aliyun.com/pypi/packages/b7/cc/1c29b0815b12de2c92b5323cad60f724ac8f0e39d0166d0b9dfacbcb70dd/h5py-2.7.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (4.5MB)
    100% |████████████████████████████████| 4.5MB 503kB/s
Requirement already satisfied: keras in /Library/Python/2.7/site-packages
Requirement already satisfied: pygame in /Library/Python/2.7/site-packages
Requirement already satisfied: matplotlib>=1.3.1 in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from scikit-image)
Requirement already satisfied: six>=1.7.3 in /Library/Python/2.7/site-packages (from scikit-image)
Requirement already satisfied: pillow>=2.1.0 in /Library/Python/2.7/site-packages (from scikit-image)
Requirement already satisfied: networkx>=1.8 in /Library/Python/2.7/site-packages (from scikit-image)
Requirement already satisfied: PyWavelets>=0.4.0 in /Library/Python/2.7/site-packages (from scikit-image)
Collecting scipy>=0.17.0 (from scikit-image)
  Downloading http://mirrors.aliyun.com/pypi/packages/72/eb/d398b9f63ee936575edc62520477d6c2353ed013bacd656bd0c8bc1d0fa7/scipy-0.19.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (16.2MB)
    100% |████████████████████████████████| 16.2MB 990kB/s
Requirement already satisfied: numpy>=1.7 in /Library/Python/2.7/site-packages (from h5py)
Requirement already satisfied: theano in /Library/Python/2.7/site-packages (from keras)
Requirement already satisfied: pyyaml in /Library/Python/2.7/site-packages (from keras)
Requirement already satisfied: python-dateutil in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: tornado in /Library/Python/2.7/site-packages (from matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: pyparsing>=1.5.6 in /Users/qiuwei/Library/Python/2.7/lib/python/site-packages (from matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: nose in /Library/Python/2.7/site-packages (from matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: olefile in /Library/Python/2.7/site-packages (from pillow>=2.1.0->scikit-image)
Requirement already satisfied: decorator>=3.4.0 in /Library/Python/2.7/site-packages (from networkx>=1.8->scikit-image)
Requirement already satisfied: singledispatch in /Library/Python/2.7/site-packages (from tornado->matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: certifi in /Library/Python/2.7/site-packages (from tornado->matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: backports_abc>=0.4 in /Library/Python/2.7/site-packages (from tornado->matplotlib>=1.3.1->scikit-image)
Installing collected packages: scipy, scikit-image, h5py
Successfully installed h5py-2.7.0 scikit-image-0.13.0 scipy-0.19.0 

Надеюсь, что это поможет кому-то, кто сталкивается с подобной проблемой!

Ответ 8

TL; DR $PATH fix

  • Используйте pip install --user package_name для установки пакета, который должен включать исполняемые файлы CLI.
  • Запустите оболочку python и import package_name
  • Найти, где lib/python/... встречается на выходе, и заменить его на bin
  • Вероятно, это будет $HOME/Library/Python/2.7/bin

Подробнее

Из-за новой защиты целостности системы в macOS 10.11 El Capitan вы больше не можете sudo pip install. Мы не будем обсуждать достоинства этого здесь.

Другой ответ объясняет, что вы должны pip install --user правильно. Но они отправили вас на задние переулки, чтобы выяснить, что делать с вашим $PATH, чтобы вы могли получить доступ к установленным исполняемым файлам. К счастью, я уже решил аналогичную потребность в несвязанном вопросе.

Вот расшифровка того, как я решил проблему на одной из моих систем. Я включаю все это, а не только $PATH, который работал на меня, потому что ваша система может отличаться от моей. Этот процесс должен работать для всех.

$ pip install --user jp
Collecting jp
  Downloading jp-0.2.4.tar.gz
Installing collected packages: jp
  Running setup.py install for jp ... done
Successfully installed jp-0.2.4

$ python -c 'import jp; print jp'
<module 'jp' from '/Users/bbronosky/Library/Python/2.7/lib/python/site-packages/jp/__init__.pyc'>

$ find /Users/bbronosky/Library/Python -type f -perm -100
/Users/bbronosky/Library/Python/2.7/bin/jp

$ which jp

$ echo -e '\n''export PATH=$HOME/Library/Python/2.7/bin:$PATH' >> ~/.bashrc

$ bash # starting a new bash process for demo, but you should open a new terminal

$ which jp
/Users/bbronosky/Library/Python/2.7/bin/jp

$ jp
usage: jp <expression> <filepath>

Ответ 9

Трудно заставить pip работать над El Capitan по нескольким причинам:

  • OS X не устанавливает некоторые параметры distutils правильно, поэтому pip пытается установить вспомогательные файлы в местах под /System/Library/. El Capitan блокирует это, это ошибка, с которой вы сталкиваетесь.
  • OS X включает в себя несколько устаревших пакетов под /System/Library/. пип часто хочет обновить их, но не может на Эль Капитан.
  • OS X помещает /System/Library/ выше в порядке поиска python, чем /Library/Python/2.7/site-packages (общесистемное расположение пакета python), поэтому даже если вам удастся установить более новые версии некоторых пакетов, старые все еще загружаются, ломаются некоторые зависимости.

Существуют обходные пути для всех из них на https://apple.stackexchange.com/a/223163/143849. Но вам может быть лучше установить собственную версию Python через стандартный установщик Python, Homebrew или Anaconda.

Ответ 10

Я полностью согласен с Микко, но если вы все еще хотите это сделать, вот способ:

  • Перезагрузка в режиме восстановления (Hold cmd + R)
  • Открыть терминал из коммунальных услуг
  • Используйте команду csrutil disable

Ответ 11

Я полагаю, у вас есть конфликт с другим пакетом. Для меня это было six. Поэтому вам нужно использовать команду, подобную этой:

pip install google-api-python-client --upgrade --ignore-installed six

или же

pip install --ignore-installed six

Ответ 12

У меня есть python2.7, установленный через brew, и следующее решение моей проблемы

brew установить numpy

Он устанавливает python3, но он все еще работает и устанавливает его для 2.7, а также.

Ответ 13

Как и у вас, у меня была такая же проблема. Я запускаю El Capitan и пытаюсь установить Juypter с python2.7 Вот как я смог это сделать:

Сначала установите Juypter (будет работать и с pip3):

sudo -H pip install --ignore-installed six --user --install jupiter

Затем вам нужно установить ядро ​​python 2.7, иначе вы сможете использовать python3 для ноутбука.

sudo -H python -m pip install --user --ignore-installed six --upgrade ipykernel
python -m ipykernel install --user

Это может быть полезно для тех, кто хочет сохранить установку Apple python2.7 и хочет использовать ноутбук Jupyter с python2.7 и python3.

Ответ 14

Это сделало это для меня после неудачной pip install ipython:

SF55M:~ 278$ sudo easy_install ipython
Searching for ipython
Best match: ipython 5.4.1
Adding ipython 5.4.1 to easy-install.pth file
Installing ipython script to /usr/local/bin
Installing iptest2 script to /usr/local/bin
Installing iptest script to /usr/local/bin
Installing ipython2 script to /usr/local/bin

Using /Library/Python/2.7/site-packages
Processing dependencies for ipython
Finished processing dependencies for ipython
SF55M:~ 278$ pip install ipython
Requirement already satisfied: ipython in /Library/Python/2.7/site-packages
Requirement already satisfied: prompt-toolkit<2.0.0,>=1.0.4 in 
/Library/Python/2.7/site-packages (from ipython)
Requirement already satisfied: decorator in /Library/Python/2.7/site-
packages (from ipython)
Requirement already satisfied: setuptools>=18.5 in /Library/Python/2.7/site-
packages/setuptools-19.6.1-py2.7.egg (from ipython)
Requirement already satisfied: pickleshare in /Library/Python/2.7/site-
packages (from ipython)
Requirement already satisfied: pygments in /Library/Python/2.7/site-packages 
(from ipython)
Requirement already satisfied: pexpect; sys_platform != "win32" in 
/Library/Python/2.7/site-packages (from ipython)
Requirement already satisfied: pathlib2; python_version == "2.7" or 
python_version == "3.3" in /Library/Python/2.7/site-packages (from ipython)
Requirement already satisfied: backports.shutil-get-terminal-size; 
python_version == "2.7" in /Library/Python/2.7/site-packages (from ipython)
Requirement already satisfied: simplegeneric>0.8 in 
/Library/Python/2.7/site-packages (from ipython)
Requirement already satisfied: traitlets>=4.2 in /Library/Python/2.7/site-
packages (from ipython)
Requirement already satisfied: appnope; sys_platform == "darwin" in 
/Library/Python/2.7/site-packages (from ipython)
Requirement already satisfied: six>=1.9.0 in /Library/Python/2.7/site-
packages (from prompt-toolkit<2.0.0,>=1.0.4->ipython)
Requirement already satisfied: wcwidth in /Library/Python/2.7/site-packages 
(from prompt-toolkit<2.0.0,>=1.0.4->ipython)
Requirement already satisfied: ptyprocess>=0.5 in /Library/Python/2.7/site-
packages (from pexpect; sys_platform != "win32"->ipython)
Requirement already satisfied: scandir; python_version < "3.5" in 
/Library/Python/2.7/site-packages (from pathlib2; python_version == "2.7" or 
python_version == "3.3"->ipython)
Requirement already satisfied: enum34; python_version == "2.7" in 
/Library/Python/2.7/site-packages (from traitlets>=4.2->ipython)
Requirement already satisfied: ipython-genutils in /Library/Python/2.7/site-
packages (from traitlets>=4.2->ipython)
SF55M:~ 212580378$ ipython
Python 2.7.10 (default, Feb  7 2017, 00:08:15)
Type "copyright", "credits" or "license" for more information.

IPython 5.4.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython features.
%quickref -> Quick reference.
help      -> Python own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]:
Do you really want to exit ([y]/n)?
SF55M:~ 278$

Ответ 15

У меня это сработало, так как у меня установлены python 2 и 3.

brew reinstall [email protected]

Ответ 16

Я только что установил его, используя easy_install

Например: $ sudo easy_install networkx