“OSError:操作不允许”在OSX 10.11(El Capitan)中安装Scrapy(系统完整性保护)

我正在尝试通过pip在OSX 10.11(El Capitan)中安装Scrapy Python框架。 安装脚本会下载所需的模块,并在某些时候返回以下错误:

OSError: [Errno 1] Operation not permitted: '/tmp/pip-nIfswi-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info' 

我尝试使用以下命令停用OSX 10.11中的无根function:

 sudo nvram boot-args="rootless=0";sudo reboot 

但机器重新启动时仍然出现相同的错误。

我的同胞StackExchangers的任何线索或想法?

如果有帮助,完整的脚本输出如下:

 sudo -s pip install scrapy Collecting scrapy Downloading Scrapy-1.0.2-py2-none-any.whl (290kB) 100% |████████████████████████████████| 290kB 345kB/s Requirement already satisfied (use --upgrade to upgrade): cssselect>=0.9 in /Library/Python/2.7/site-packages (from scrapy) Requirement already satisfied (use --upgrade to upgrade): queuelib in /Library/Python/2.7/site-packages (from scrapy) Requirement already satisfied (use --upgrade to upgrade): pyOpenSSL in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from scrapy) Collecting w3lib>=1.8.0 (from scrapy) Downloading w3lib-1.12.0-py2.py3-none-any.whl Collecting lxml (from scrapy) Downloading lxml-3.4.4.tar.gz (3.5MB) 100% |████████████████████████████████| 3.5MB 112kB/s Collecting Twisted>=10.0.0 (from scrapy) Downloading Twisted-15.3.0.tar.bz2 (4.4MB) 100% |████████████████████████████████| 4.4MB 94kB/s Collecting six>=1.5.2 (from scrapy) Downloading six-1.9.0-py2.py3-none-any.whl Requirement already satisfied (use --upgrade to upgrade): zope.interface>=3.6.0 in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from Twisted>=10.0.0->scrapy) Requirement already satisfied (use --upgrade to upgrade): setuptools in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from zope.interface>=3.6.0->Twisted>=10.0.0->scrapy) Installing collected packages: six, w3lib, lxml, Twisted, scrapy Found existing installation: six 1.4.1 DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project. Uninstalling six-1.4.1: Exception: Traceback (most recent call last): File "/Library/Python/2.7/site-packages/pip-7.1.0-py2.7.egg/pip/basecommand.py", line 223, in main status = self.run(options, args) File "/Library/Python/2.7/site-packages/pip-7.1.0-py2.7.egg/pip/commands/install.py", line 299, in run root=options.root_path, File "/Library/Python/2.7/site-packages/pip-7.1.0-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.0-py2.7.egg/pip/req/req_install.py", line 726, in uninstall paths_to_remove.remove(auto_confirm) File "/Library/Python/2.7/site-packages/pip-7.1.0-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.0-py2.7.egg/pip/utils/__init__.py", line 314, in renames shutil.move(old, new) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 302, in move copy2(src, real_dst) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 131, in copy2 copystat(src, dst) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 103, in copystat os.chflags(dst, st.st_flags) OSError: [Errno 1] Operation not permitted: '/tmp/pip-nIfswi-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info' 

我也认为这是绝对没有必要开始黑客OS X.

我能解决它做一个

 brew install python 

似乎使用新的El Capitan附带的python / pip有一些问题。

 pip install --ignore-installed six 

会做的伎俩。

资料来源: github.com/pypa/pip/issues/3165

正如其他答案所说,这是因为新的系统完整性保护,但我相信其他答案是过于复杂。

如果你只使用当前用户的软件包,你应该可以安装它,而不需要禁用SIP,通过使用--user标志。 喜欢这个:

 sudo pip install --user packagename 

警告

我build议非常强烈地反对在Mac上修改系统Python; 有很多问题可以发生。

您的特定错误显示,安装程序在解决Scrapy的依赖性问题时不会影响当前的Python安装。 系统使用Python执行许多基本任务,因此保持系统安装稳定并与Apple最初安装一样重要

在绕过内置的安全性之前,我也会耗尽所有其他的可能性

打包pipe理解决scheme

请先查看一下Python虚拟化工具,比如virtualenv ; 这将允许你安全地进行试验。

另一个有用的工具,使用语言和软件没有与您的Mac OS冲突的是自制软件 。 像MacPorts或Fink一样, Homebrew是Mac的一个软件包pipe理器 ,可以安全地尝试很多其他的语言和工具。

“自己动手”软件安装:

如果你不喜欢软件包pipe理器的方法,你可以使用/usr/localpath或者创build一个/opt/local目录来安装一个备用的Python安装,并修复你的.bashrc的path。 请注意,您必须为这些解决scheme启用root。

无论如何如何做到这一点:

如果你绝对必须禁用安全检查 (我真诚地希望这是除了与系统语言和资源搞乱之外),你可以暂时禁用它,并重新启用它使用本文中的一些技术,如何禁用系统完整性保护 。

这为我做了诡计:

  sudo pip install scrapy --ignore-installed six 

您应该禁用“系统完整性保护”,这是El Capitan的新function。

首先,您应该在terminal上运行无根configuration的命令

 # nvram boot-args="rootless=0" # reboot 

然后,您应该在恢复分区的terminal(Recovery OS)上运行以下命令

 # csrutil disable # reboot 

我刚刚解决了我的问题。 我不确定第一部分是否必要。 试试你喜欢的。

– 警告

一切正常后,您应该再次启用SIP;

只需重新启动进入恢复模式,并在terminal运行

 # csrutil enable 

csrutil: configuration系统完整性保护

我试图在El Capitan中通过pip安装AWS,但出现此错误

OSError:[Errno 1]不允许操作:'/var/folders/wm/jhnj0g_s16gb36y8kwvrgm7h0000gp/T/pip-wTnb_D-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six- 1.4.1-py2.7.egg-INFO”

我在这里find了答案

 sudo -H pip install awscli --upgrade --ignore-installed six 

它适用于我:)

高票答案对我来说不起作用,似乎对于EI Capitan的用户来说是有效的。 但对于MacOS Sierra用户,请尝试以下步骤

  1. brew install python
  2. sudo pip install --user <package name>

这为我做了诡计。

sudo pip安装–ignore安装的scrapy

我在MacOS Sierra上遇到了同样的错误。 我遵循了这些步骤,并成功地安装了封装包。

 1. sudo pip install --ignore-installed six 2. sudo pip install --ignore-installed scrapy MacBook-Air:~ shree$ scrapy version Scrapy 1.4.0 

再次安装python:

brew安装python

再试一次:

sudo pip安装scrapy

为我工作,希望它可以帮助

重新启动Mac – >在启动之后按住“Command + R”键 – >打开OS X Utilities – >打开terminal并键入“csrutil disable” – >重新启动OS X – >打开terminal并选中“csrutil status”

这个命令将工作得很好:D

sudo -H pip install –upgrade package_name –ignore-installed六

  1. – closuresSIP(系统完整性保护) – 然后重新启动,使用命令+ R进入debugging模式,然后selectterminal:csrutil禁用重启

2。

sudo C_INCLUDE_PATH = / Applications / Xcode.app / Contents / Developer / Platforms / MacOSX.platform / Developer / SDKs / MacOSX10.11.sdk / usr / include / libxml2:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX .platform / Developer / SDKs / MacOSX10.11.sdk / usr / include / libxml2 / libxml:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/包括pip install scrapy –ignore-installed六

3. – 然后删除旧的六,再次安装sudo rm -rf /Library/Python/2.7/site-packages/six* sudo rm -rf /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/ lib / python / six * sudo pip安装六

4. – 然后将其设置回csrutil启用重启

– 现在蹩脚的作品

试了一些答案的组合,这最终奏效了:

sudo -H pip install --upgrade --ignore-installed awsebcli

干杯

我错过了沿线其他地方的依赖项,所以我安装了这个项目的其他需求:

 pip install --user -r requirements.txt 

它为我工作:

 pip install scrapy --user -U