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 -установленные) установки мешают друг другу, поэтому именно упомянутые инструменты действительно указывают на разные местоположения (поскольку они принадлежат разным установкам). Я понимаю, что обычно эти инструменты из одной точки установки в одну и ту же папку.
Ответ 3
Вам следует переустановить Python:
brew reinstall python
Чтобы получить варево, смотрите домашнюю страницу варева.
Ответ 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