“OSError 10.11(El Capitan)中安装Scrapy时出现”OSError:[Errno 1]操作不允许“(系统完整性保护)

时间:2015-08-09 01:00:38

标签: python macos python-2.7 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中的无根功能:

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'

18 个答案:

答案 0 :(得分:398)

pip install --ignore-installed six

会做的伎俩。

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

答案 1 :(得分:148)

我也认为绝对没有必要开始攻击OS X.

我能够解决它

brew install python

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

答案 2 :(得分:87)

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

如果您只在当前用户中使用该软件包,则应该可以使用var links = $(".d2l-datalist li .d2l-course-selector-item .d2l-left .vui-link"); //links.text("Boo!"); var count = 1; for (var link in links) { link.text("Boo #" + count); count += 1; } 标志安装它,而无需禁用SIP。像这样:

--user

答案 3 :(得分:38)

高投票的答案对我不起作用,似乎适用于El Capitan用户。但对于MacOS Sierra用户,请尝试以下步骤

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

答案 4 :(得分:23)

<强>警告

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

您的特定错误表明安装程序在解决Scrapy的依赖关系时遇到问题,而不会影响当前的Python安装。该系统使用Python执行许多基本任务,因此保持系统安装稳定非常重要,并且最初由Apple安装。

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

包管理器解决方案:

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

使用语言和软件而不与Mac OS冲突的另一个有用工具是Homebrew。与MacPortsFink一样, Homebrew是Mac的软件包管理器,对于安全地尝试许多其他语言和工具非常有用。

“推出自己的”软件安装:

如果您不喜欢包管理器方法,可以使用/usr/local路径或创建/opt/local目录来安装备用Python安装并修复.bashrc中的路径}。请注意,您必须为这些解决方案启用root。

无论如何都要这样做:

如果您绝对必须禁用安全检查(我真诚地希望它不是用于处理系统语言和资源),您可以暂时禁用它并使用某些功能重新启用它本文中有关如何Disable System Integrity-Protection的技巧。

答案 5 :(得分:16)

这对我有用:

   sudo pip install scrapy --ignore-installed six

答案 6 :(得分:12)

您应该禁用&#34;系统完整性保护&#34;这是El Capitan的新功能。

首先,您应该在终端上运行无根配置命令

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

然后,您应该在恢复分区的终端(恢复操作系统)上运行以下命令

# csrutil disable
# reboot

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

<强> - 警告

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

只需重新启动进入恢复模式并在终端

中运行
# csrutil enable

csrutil:Configuring System Integrity Protection

答案 7 :(得分:12)

我尝试通过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-信息“

我找到了答案here

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

它对我有用:)

答案 8 :(得分:8)

我在MacOS Sierra上遇到了同样的错误。我按照这些步骤成功安装了邋py的包。

1. sudo pip install --ignore-installed six
2. sudo pip install --ignore-installed scrapy

MacBook-Air:~ shree$ scrapy version
Scrapy 1.4.0

答案 9 :(得分:5)

这对我有用。

sudo pip install --ignore-installed scrapy

答案 10 :(得分:4)

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

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

干杯

答案 11 :(得分:2)

再次安装python:

  
    

brew install python

  

再试一次:

  
    

sudo pip install scrapy

  

对我有用,希望它可以帮助

答案 12 :(得分:1)

这个命令可以很好地完成:D

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

答案 13 :(得分:1)

重启Mac - &gt;按住&#34; Command + R&#34;在启动时钟之后 - &gt;打开OS X实用程序 - &gt;打开终端并键入&#34; csrutil disable&#34; - &GT;重启OS X - &gt;打开终端并检查&#34; csrutil状态&#34;

答案 14 :(得分:1)

如果您尝试使用pip而不是pip3在python2文件夹中安装python3 lib,则有时可能会实现此类行为。

答案 15 :(得分:0)

  1. - 关闭SIP(系统完整性保护) - 然后重启,使用命令+ R进入调试模式,然后选择终端: csrutil禁用 重启
  2. 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/include pip install scrapy --ignore-installed six

    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启用 重新启动

    - 糟糕的作品现在

答案 16 :(得分:-1)

它对我有用:

pip install scrapy --user -U

答案 17 :(得分:-1)

我在线上的其他地方错过了一个依赖项,所以我安装了项目的其他要求,如下所示:

pip install --user -r requirements.txt