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

我试图通过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

但是当机器重新启动时,我仍然得到相同的错误。

我的stackexchanger同事有什么建议吗?

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

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'
226457 次浏览

警告

我建议非常强烈的反对修改Mac上的系统Python;可能会出现很多问题。

您的特定错误显示安装程序在解决Scrapy的依赖关系时存在问题,而不会影响当前的Python安装。该系统使用Python来完成一些基本任务,因此保持系统安装稳定是很重要的和最初由Apple安装。

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

包管理器解决方案:

请先查看Python虚拟化工具,如virtualenv;这样可以让你安全地做实验。

另一个使用语言和软件而不与Mac OS冲突的有用工具是家酿。如MacPorts芬克Homebrew是Mac上的包管理器,并且对于安全地尝试许多其他语言和工具非常有用。

“滚你自己的”软件安装:

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

怎么做呢:

如果你必须禁用安全检查(我真诚地希望它不是为了搞乱系统语言和资源),你可以暂时禁用它,并使用关于如何禁用系统完整性保护功能的一些技术重新启用它。

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

首先,您应该在您的终端上运行root config命令

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

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

# csrutil disable
# reboot
我就这样解决了我的问题。 我不确定第一部分是否有必要。你爱怎么试就怎么试。< / p >

——警告

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

只需重新启动到恢复模式,并在终端运行

# csrutil enable

csrutil: 配置系统完整性保护

pip install --ignore-installed six

会成功的。

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

重启Mac ->在启动铃声后按住“Command + R”->打开OS X Utilities ->打开终端并输入“csrutil disable”->重启OS X ->打开终端并检查“csrutil status”

我也认为完全没有必要侵入OS X系统。

我可以用a来解

brew install python

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

  1. —close SIP(系统完整性保护) ——然后重启,使用命令+R进入调试模式,然后选择终端: csrutil禁用 李重启< / >

2.

< p > sudo C_INCLUDE_PATH = /应用程序/ xcode /内容/开发/平台/ MacOSX.platform /开发/ sdk / MacOSX10.11.sdk / usr / include / libxml2 : / / xcode /内容/应用开发人员/平台/ MacOSX.platform /开发/ sdk / MacOSX10.11.sdk / usr / include / libxml2 / libxml : / / xcode /内容/应用开发人员/平台/ MacOSX.platform /开发/ sdk / MacOSX10.11.sdk / usr / include PIP install scrapy——ignore-installed six

< p > 3。 ——然后移除旧的6个,重新安装 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 install six

< p > 4。 ——然后让它后退 csrutil启用 重新启动< / p >

——糟糕的作品

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

OSError: [Errno 1]操作不允许: ' / var /文件夹/ wm / jhnj0g_s16gb36y8kwvrgm7h0000gp / T / pip-wTnb_D-uninstall /系统/图书馆/框架/ Python.framework /版本/ 2.7 /配件/ lib / python / six-1.4.1-py2.7.egg-info”< / p >

我找到了答案在这里

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

这对我很有用:)

这对我来说很管用:

   sudo pip install scrapy --ignore-installed six

这招对我很管用。

Sudo PIP install—ignore-installed scrapy

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

如果你只打算在当前用户中使用这个包,你应该能够很好地安装它,而不需要禁用SIP,通过使用--user标志。是这样的:

sudo pip install --user packagename

重新安装python:

编译安装python

再试一次:

Sudo PIP安装scrapy

对我有用,希望能有所帮助

这对我很管用:

pip install scrapy --user -U

我在其他地方丢失了一个依赖项,所以我像这样安装了项目的其他需求:

pip install --user -r requirements.txt

这个命令可以很好地工作

sudo -H pip install——upgrade package_name——ignore-installed 6

我在MacOS Sierra上也出现了同样的错误。我按照这些步骤成功地安装了scarpy包。

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


MacBook-Air:~ shree$ scrapy version
Scrapy 1.4.0

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

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

干杯

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

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

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