Я пытаюсь установить ipython через pip-8.1.2 in
OS X 10.11.5 и получаю ошибку Operation Not Permitted
:
$ sudo pip install ipython
The directory '/Users/alp/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.
The directory '/Users/alp/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting ipython
Downloading ipython-4.2.0-py2-none-any.whl (736kB)
100% |████████████████████████████████| 737kB 1.5MB/s
Requirement already satisfied (use --upgrade to upgrade): traitlets in /Library/Python/2.7/site-packages (from ipython)
Requirement already satisfied (use --upgrade to upgrade): gnureadline; sys_platform == "darwin" and platform_python_implementation == "CPython" in /Library/Python/2.7/site-packages (from ipython)
Requirement already satisfied (use --upgrade to upgrade): pexpect; sys_platform != "win32" in /Library/Python/2.7/site-packages (from ipython)
Requirement already satisfied (use --upgrade to upgrade): simplegeneric>0.8 in /Library/Python/2.7/site-packages (from ipython)
Requirement already satisfied (use --upgrade to upgrade): backports.shutil-get-terminal-size in /Library/Python/2.7/site-packages (from ipython)
Requirement already satisfied (use --upgrade to upgrade): decorator in /Library/Python/2.7/site-packages (from ipython)
Collecting setuptools>=18.5 (from ipython)
Downloading setuptools-22.0.0-py2.py3-none-any.whl (509kB)
100% |████████████████████████████████| 512kB 2.0MB/s
Requirement already satisfied (use --upgrade to upgrade): pickleshare in /Library/Python/2.7/site-packages (from ipython)
Requirement already satisfied (use --upgrade to upgrade): appnope; sys_platform == "darwin" in /Library/Python/2.7/site-packages (from ipython)
Requirement already satisfied (use --upgrade to upgrade): ipython-genutils in /Library/Python/2.7/site-packages (from traitlets->ipython)
Requirement already satisfied (use --upgrade to upgrade): ptyprocess>=0.5 in /Library/Python/2.7/site-packages (from pexpect; sys_platform != "win32"->ipython)
Requirement already satisfied (use --upgrade to upgrade): path.py>=6.2 in /Library/Python/2.7/site-packages (from pickleshare->ipython)
Installing collected packages: setuptools, ipython
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/basecommand.py", line 215, in main
status = self.run(options, args)
File "/Library/Python/2.7/site-packages/pip/commands/install.py", line 317, in run
prefix=options.prefix_path,
File "/Library/Python/2.7/site-packages/pip/req/req_set.py", line 736, in install
requirement.uninstall(auto_confirm=True)
File "/Library/Python/2.7/site-packages/pip/req/req_install.py", line 742, in uninstall
paths_to_remove.remove(auto_confirm)
File "/Library/Python/2.7/site-packages/pip/req/req_uninstall.py", line 115, in remove
renames(path, new_path)
File "/Library/Python/2.7/site-packages/pip/utils/__init__.py", line 267, 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-OcVZvi-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py', "[Errno 1] Operation not permitted: '/tmp/pip-OcVZvi-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-OcVZvi-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc', "[Errno 1] Operation not permitted: '/tmp/pip-OcVZvi-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-OcVZvi-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py', "[Errno 1] Operation not permitted: '/tmp/pip-OcVZvi-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-OcVZvi-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc', "[Errno 1] Operation not permitted: '/tmp/pip-OcVZvi-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-OcVZvi-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib', "[Errno 1] Operation not permitted: '/tmp/pip-OcVZvi-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib'")]
Привет, спасибо за отчет,
Новые версии Mac Os имеют высокие ограничения на то, что вы можете делать, и называются: Защита целостности системы .
К сожалению, мы мало что можем с этим поделать, и в любом случае причины для защиты целостности системы кажутся разумными.
Кроме того, обычно вы не хотите устанавливать что-то в масштабе всей системы, нет причин использовать sudo
перед pip
. Если у вас нет разрешений, скорее всего, на это есть веская причина.
Вы должны иметь возможность устанавливать любые пакеты как пользователь, используя --user
:
pip install ipython --user
Который будет иметь преимущество установки в вашем доме, где у вас есть ~ 0 шансов сломать вашу систему. Более того, вам не потребуется использовать sudo
которые вам в любом случае не нужно использовать.
Я также рекомендую вам не использовать system-python на Mac:
1) Он никогда не обновляется и странным образом связан с некоторыми бинарными библиотеками.
2) Это Python2.7, который в ближайшее время больше не будет поддерживаться
Предпочитайте brew install python
/ brew install python3
которые имеют полную отдельную установку Python, которая также не требует sudo. Или анаконда, которая делает то же самое, поддерживает несколько сред и имеет двоичный код многих пакетов python, которых не хватает Homebrew.
Закрытие - проблема, которую мы не можем исправить.
Спасибо, ребята, извините за то, что я не исследовал.
Я установил ipython с помощью pip install --user
и теперь я не могу найти его нигде в моем $ PATH. Должен ли он добавить символическую ссылку для себя в известное место? Моя ПУТЬ выглядит следующим образом:
/usr/local/opt/coreutils/libexec/gnubin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Спасибо, ребята, извините за то, что я не исследовал.
Не очевидно, чтобы найти, не беспокойтесь.
/ usr / local / opt / coreutils / libexec / gnubin: / usr / local / bin: / usr / bin: / bin: / usr / sbin: / sbin
Ой, у вас действительно короткий ПУТЬ. Да IIRC, он должен добавить себя в .local/bin/
К сожалению, в большинстве систем я не думаю, что ~/.local/bin/
включен в PATH по умолчанию. Нам легко забыть, потому что мы, вероятно, добавили его давным-давно и забыли. Но единственный способ для установки пользователя надежно поместить что-то в PATH - это изменить ваш .bashrc
(или .bash_profile
или .profile
или один из этих беспорядочных файлов), чтобы изменить PATH сам. И мы не можем разумно сделать это при установке пакета Python.
К сожалению, я не думаю, что ~ / .local / bin / in в PATH по умолчанию в большинстве систем. Нам легко забыть, потому что мы, вероятно, добавили его давным-давно и забыли. Но единственный способ для установки пользователя надежно поместить что-то в PATH - это изменить ваш .bashrc (или .bash_profile, или .profile, или один из этих беспорядочных файлов), чтобы изменить сам PATH. И мы не можем разумно сделать это при установке пакета Python.
Ты меня огорчил на сегодня.
Самый полезный комментарий
Привет, спасибо за отчет,
Новые версии Mac Os имеют высокие ограничения на то, что вы можете делать, и называются: Защита целостности системы .
К сожалению, мы мало что можем с этим поделать, и в любом случае причины для защиты целостности системы кажутся разумными.
Кроме того, обычно вы не хотите устанавливать что-то в масштабе всей системы, нет причин использовать
sudo
передpip
. Если у вас нет разрешений, скорее всего, на это есть веская причина.Вы должны иметь возможность устанавливать любые пакеты как пользователь, используя
--user
:Который будет иметь преимущество установки в вашем доме, где у вас есть ~ 0 шансов сломать вашу систему. Более того, вам не потребуется использовать
sudo
которые вам в любом случае не нужно использовать.Я также рекомендую вам не использовать system-python на Mac:
1) Он никогда не обновляется и странным образом связан с некоторыми бинарными библиотеками.
2) Это Python2.7, который в ближайшее время больше не будет поддерживаться
Предпочитайте
brew install python
/brew install python3
которые имеют полную отдельную установку Python, которая также не требует sudo. Или анаконда, которая делает то же самое, поддерживает несколько сред и имеет двоичный код многих пакетов python, которых не хватает Homebrew.