[python] OSX 10.11 (El Capitan)에 Scrapy를 설치할 때 “OSError : [Errno 1] 작업이 허용되지 않습니다”(시스템 무결성 보호)

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'



답변

또한 OS X 해킹을 시작할 필요는 없다고 생각합니다.

나는 그것을하고 해결할 수있었습니다.

brew install python

새로운 El Capitan과 함께 제공되는 python / pip를 사용하는 데 문제가있는 것 같습니다.


답변

pip install --ignore-installed six

트릭을 할 것입니다.

출처 : github.com/pypa/pip/issues/3165


답변

다른 답변에서 알 수 있듯이 새로운 시스템 무결성 보호로 인한 것이지만 다른 답변은 너무 복잡하다고 생각합니다.

현재 사용자에게만 해당 패키지를 사용하려는 경우 --user플래그 를 사용하여 SIP를 비활성화하지 않고도 패키지를 올바르게 설치할 수 있습니다 . 이처럼 :

sudo pip install --user packagename


답변

높은 투표 응답은 저에게 효과가 없었으며 El Capitan 사용자에게는 효과가있는 것 같습니다. 그러나 MacOS Sierra 사용자의 경우 다음 단계를 시도하십시오.

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

답변

경고

Mac에서 시스템 Python을 수정 하지 말 것을 강력히 권합니다. 발생할 수있는 수많은 문제가 있습니다.

특정 오류는 설치 프로그램에 현재 Python 설치에 영향을 미치지 않으면 서 Scrapy의 종속성을 해결하는 데 문제가 있음을 나타냅니다. 시스템은 많은 필수 작업에 Python을 사용하므로 시스템 설치를 안정적으로 유지하는 것이 중요합니다 Apple이 처음 설치 한대로 .

또한 기본 제공 보안을 우회하기 전에 다른 모든 가능성을 소진합니다 .

패키지 관리자 솔루션 :

virtualenv 와 같은 Python 가상화 도구를 먼저 살펴보십시오 . 이를 통해 안전하게 실험 할 수 있습니다.

Mac OS와 충돌하지 않고 언어와 소프트웨어를 사용하는 또 다른 유용한 도구는 Homebrew 입니다. 마찬가지로 MacPorts를핑크 , 브루 Mac 용 패키지 관리자입니다 , 안전하게 다른 언어와 도구를 많이 시도하는 데 유용합니다.

“자신의 롤링”소프트웨어 설치 :

패키지 관리자 접근 방식이 마음에 들지 않으면 /usr/local경로를 사용 하거나 /opt/local대체 Python 설치를 설치하기 위한 디렉토리를 만들고에서 경로를 수정하십시오 .bashrc. 이러한 솔루션에 대해 루트를 활성화해야합니다.

어쨌든 그것을하는 방법 :

보안 검사를 완전히 비활성화해야 하고 시스템 언어 및 리소스를 망칠 수있는 것이 아니라면 이 게시물의 시스템 비활성화 방법에 대한 기술을 사용하여 일시적으로 비활성화하고 다시 활성화 할 수 있습니다 무결성 보호 .


답변

이것은 나를 위해 속임수를했다 :

   sudo pip install scrapy --ignore-installed six


답변

El Capitan의 새로운 기능인 “시스템 무결성 보호”를 비활성화해야합니다.

먼저, 터미널에서 rootless config 명령을 실행해야합니다

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

그런 다음 복구 파티션의 터미널 (복구 OS)에서 아래 명령을 실행해야합니다.

# csrutil disable
# reboot

방금 그런 문제를 해결했습니다. 첫 번째 부분이 필요한지 확실하지 않습니다. 당신이 원하는대로 시도하십시오.

–경고

모든 것이 작동 한 후에 SIP를 다시 활성화해야합니다.

간단히 복구 모드로 다시 부팅하고 터미널에서 실행하십시오.

# csrutil enable

csrutil : 시스템 무결성 보호 구성