在OSX 10.11(El Capitan)中安装Scrapy(系统完整性保护)时,出现“ OSError:[Errno 1] Operation not allow”


206

我正在尝试通过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'



也许您可以在
不禁

5
当我尝试使用pip安装“ virtualenvwrapper”时,我遇到了完全相同的问题,但是此命令对我有用:“ sudo pip install --ignore-installed virtualenvwrapper”因此,它也可能适用于您的情况,而不必经历痛苦的​​过程回旋处
Arabasta '16

Answers:


153

我也认为完全没有必要开始入侵OSX。

我能够解决它

brew install python

看来,使用新版El Capitan随附的python / pip会有一些问题。


2
也为我工作,并为我提供了下一个Python2.7.X。这个答案应该会赢
Russell_A

3
这是El Capitan Mac用户的最佳答案
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2013年

您已经正确指出了!这应该被接受的答案!
Muaaz salagar'4

为我做到了。(Sierra 10.13.6)
迈克尔·

@codersofthedark可能brew install python3可以解决此问题,因为在较新的系统上,python3现在是默认的python。
马里奥(Mario)

399
pip install --ignore-installed six

会做到的。

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


51
在El Capitan上安装awscli而不打乱python安装时,这对我来说效果很好:sudo pip install --ignore-installed awscli
Luke

3
使用此方法安装时无法导入刮板ImportError: cannot import name xmlrpc_client
harinsa 2015年

3
--ignore-installed标志也为我完成了AWS Elastic Beanstalk Cli的技巧。终于...
国王约翰(John King)

1
这对我也很好。我认为这应该是正确的答案。
保罗·卡尔顿

1
这对我有用sudo pip install --ignore-installed scrapy
索菲亚·冯

89

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

如果您只想在当前用户中使用该软件包,则可以使用该--user标志,而无需禁用SIP,就可以很好地安装它。像这样:

sudo pip install --user packagename

2
我不清楚这些不同标志的工作方式,但是这个答案对我来说似乎最有意义。(它也起作用了:)
xdhmoore

@xdhmoore谢谢,我想也是如此。无需禁用SIP或安装新的python或具有依赖性的混乱。
Dietbacon

对于mkvirtualenv,这没有将软件包安装在预期的位置/ usr / local / bin中。相反,sudo pip install mkvirtualenv --ignore-installed six按预期工作,把virtualenvwrapper.sh在/ usr / local / bin目录
罗布

@Rob真的不是。--user标志仅为当前用户安装,因此有意义的是,它不会安装在非特定于用户的文件夹中。对我而言,此命令将.py文件和“ /Users/myusername/Library/Python/2.7/bin”的软件包安装在“ /Users/myusername/Library/Python/2.7/lib/python/site-packag‌es”中.sh文件的搜索
Dietbacon

1
这对我来说很有效。sudo pip install --user rasa_nlu
nantitv

40

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

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

sudo pip install --user <package name>为我工作,无需重新安装python
Datageek

23

警告事项

强烈建议不要在Mac上修改系统Python;可能会发生许多问题。

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

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

包管理器解决方案:

请先研究Python虚拟化工具,例如virtualenv;这样可以安全地进行实验。

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

“自行运行”软件安装:

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

无论如何如何:

如果您绝对必须禁用安全检查(并且我衷心希望它用于解决系统语言和资源之外的其他问题),则可以暂时禁用它,然后使用本文中有关如何禁用系统的一些技术来重新启用它完整性保护


2
这是对时间的投资,需要一定的命令行熟练度,但是结果值得-我将类似的虚拟环境用于Ruby(RVM),Perl等。Homebrew可用于安全地尝试许多其他语言和工具也一样
rholmes

16

这对我有用:

   sudo pip install scrapy --ignore-installed six

是的,这sudo pip install virtualenvwrapper --ignore-installed six同样适用,避免了此错误:OSError: [Errno 1] Operation not permitted: '/tmp/..../System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info'
Rob

12

您应禁用“系统完整性保护”,这是El Capitan的一项新功能。

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

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

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

# csrutil disable
# reboot

我刚刚解决了我的问题。我不确定第一部分是否必要。随便尝试。

- 警告

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

只需再次重新启动进入恢复模式并在终端中运行

# csrutil enable

csrutil:配置系统完整性保护


10
不不不。这是一个在用户空间中运行的工具。请参阅stackoverflow.com/a/33024464/743638,以了解相对简单的方法。从1.未签名的内核扩展中禁用保护2.修改系统二进制文件3.在系统路径等上进行检查和安装等等,这很愚蠢。至少建议在安装后暂时删除SIP,然后再将其重新打开。
2015年

6
我不会这样做。这是自找麻烦。有关更优雅的解决方案的方法,请参见下面的答案。
Mario

1
这个问题一个多月没有得到回答。我认为,这是当时唯一的“可行”解决方案。我将编辑我的答案,并给出一些警告,以便在安装完一切之后启用SIP。
Ergun Ozyurt 2015年

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-info'

我在这里找到答案

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

这个对我有用 :)


10

我在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


5

尝试了一些答案的组合,最终成功了:

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

干杯


2

再次安装python:

brew安装python

再试一次:

须藤点安装刮

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


1

重新启动Mac->在启动提示音后按住“ Command + R”->打开OS X实用程序->打开终端并键入“ csrutil disable”->重新启动OS X->打开终端并检查“ csrutil status”



1

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


0
  1. -关闭SIP(系统完整性保护)-然后重新启动,使用命令+ R进入调试模式,然后选择终端:csrutil disable reboot

2。

sudo C_INCLUDE_PATH = /应用程序/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 6

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

-cr脚的作品现在



-1

我在其他地方缺少依赖项,因此我为项目安装了其他要求,如下所示:

pip install --user -r requirements.txt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.