태그 보관물: python-2.7

python-2.7

OSX El Capitan에서 setuptools 업그레이드 제거하려고해도 실패합니다. $ sudo -H pip

setuptools를 업그레이드하려고합니다. 실제로 ansible을 업그레이드하려고 시도하고 있지만 setuptools를 업그레이드하려고 시도하고 실패합니다. 직접 시도하는 것도 실패합니다. 제거하려고해도 실패합니다.

$ sudo -H pip install --upgrade setuptools
Collecting setuptools
  Using cached setuptools-18.4-py2.py3-none-any.whl
Installing collected packages: setuptools
  Found existing installation: setuptools 1.1.6
    Uninstalling setuptools-1.1.6:
Exception:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg/pip/basecommand.py", line 211, in main
    status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg/pip/commands/install.py", line 311, in run
    root=options.root_path,
  File "/Library/Python/2.7/site-packages/pip-7.1.2-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.2-py2.7.egg/pip/req/req_install.py", line 716, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/Library/Python/2.7/site-packages/pip-7.1.2-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.2-py2.7.egg/pip/utils/__init__.py", line 315, in renames
    shutil.move(old, new)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 299, in move
    copytree(src, real_dst, symlinks=True)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 208, in copytree
    raise Error, errors
Error: [('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib'")]

나는 무엇이 잘못되었는지 가장 잘 모른다. /System/Library/Frameworks/Python.framework/Versions/2.7/모든 단일 파일이 소유하고있는 안과 아래의 모든 파일을 살펴보면root:wheel

어떻게 고칠 수 있습니까?



답변

이는 OS X El Capitan에 도입 된 시스템 무결성 보호로 인해 발생합니다.

--user python명령에 추가하면 작동합니다.

다시 말해

pip install --upgrade setuptools --user python

답변

개요

문제는 시스템 Python 라이브러리를 보호하는 Mac OS의 시스템 무결성 보호 (SIP)와 결합 된 Python 라이브러리 충돌입니다.

내 생각에 가장 좋은 해결책은 Python 설치를 제거하고 다시 설치하고 SIP로 보호되는 Mac OS에서 제공하는 Python 라이브러리와 별도로 유지하는 것입니다.

SIP가 향후 Mac OS 릴리스의 일부가 될 것으로 예상하고 SIP가 여기서 원인이 아니라 충돌하는 Python 라이브러리 문제를 노출하기 때문에 SIP를 비활성화하는 것이 좋습니다.

세부

나는 또한 ansible을 설치하려고 시도하는이 문제가있었습니다.

내 문제는 Mac OS에 대한 ansible 설치 지침을 따랐을 때 시작되었습니다. 이는 pip를 통해 설치하고 Pip를 통한 최신 릴리스에easy_install 설명 된대로 pip를 설치하는 것입니다.

이런 식으로 핍 설치할 때 문제는이 easy_install맥 OS가 제공됩니다 easy_install/usr/bin/easy_install있지만에 기록 easy-install.pth에서 파일 /Library/Python/2.7/site-packages/easy-install.pth및 해당 파일 참조 맥 OS 파이썬 라이브러리를 제공했다.

이후에 ansible을 설치하면
Ansible pip install ansible에서 Python 라이브러리를 제공하는 Mac OS가 setuptools 요구 사항을 충족한다고보고 /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
하지만 setuptools가 필요하지만 버전을 지정하지 않습니다. 다른 종속 패키지 인 paramiko에는 setuptools> = 11.3이 필요하지만 pip를 통해 ansible을 설치할 때 확인되지 않는 것 같습니다. 설치 도구가 1.1.6이라고 불평하지만 ansible을 실행하려고 할 때 이것은 Mac OS에서 제공하는 setuptools 버전이며 현재 SIP로 보호되므로 업그레이드 할 수 없습니다.

SIP를 비활성화하는 대신 https://docs.python.org/2.7/using/mac.html#getting-and-installing-macpython에 힌트 된대로 로컬 Python을 제거한
다음 다시 다운로드하고 설치 하여이 문제 를 해결했습니다.

당신은 RM에 대해 우려하는 경우, 대신 MV 수 있습니다
내가 한 제거하려면

sudo rm -rf /Library/Python
sudo rm -rf /Applications/Python\ 2.7/
sudo rm /usr/local/bin/ansible  # executable
sudo rm /usr/local/bin/python*  # symlinks to /Library/Python/2.7
sudo rm /usr/local/bin/easy_install*
# and so on for references to /Library/Python/2.7 in /usr/local/bin

그런 다음 https://www.python.org/downloads/ 에서 Mac OS X 용 2.7.13 설치 프로그램 패키지를 다운로드하여
설치했습니다.

이것은 로컬 파이썬과 pip를 설치 /Library/Frameworks/Python.framework/Versions/2.7했고 심볼릭 링크 를 내 $ PATH /usr/local/bin앞에 추가 /Library/Frameworks/Python.framework/Versions/2.7했습니다. 이것은 맥 OS에서 별도의 모든 것을에서 라이브러리를 제공 유지 /System/Library/Frameworks/Python.framework하고 /usr/bin
내가 얻을

which pip
/Library/Frameworks/Python.framework/Versions/2.7/bin/pip

pip install ansible
그런 다음 ansible을 설치 한 다음 실행 which ansible하면

/Library/Frameworks/Python.framework/Versions/2.7/bin/ansible

그리고 pip list

setuptools (28.8.0)
six (1.10.0)

Mac OS Python 라이브러리가 새 설치에서 참조되지 않기 때문에 ansible이 이제 저에게 적합합니다.

설치 프로그램이 $ PATH를 설정했기 때문에 which python현재 /Library/Frameworks/Python.framework/Versions/2.7/bin/python이고 이것 /usr/local/bin/python에 대한 심볼릭 링크입니다.
시스템 파이썬을 원한다면 / usr / bin / python을 사용하거나 $ PATH를 변경해야합니다.


답변

대답은 OS와 함께 제공되는 공장 Python 용 OSX에서 setuptools를 업데이트 할 수 없다는 것입니다. 그 이유는 사용자가의 파일을 /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python제거하거나 수정할 수 없기 때문입니다. 일반 사용자뿐만 아니라 루트 권한이 있어도 해당 파일을 수정할 수 없습니다.

물론 다양한 다른 방법을 사용하여 최신 버전의 setuptools를 설치할 수 있지만 이것이 기본 시스템 패키지를 재정의하지는 않습니다. 즉, --user python플래그 를 사용하는 제안 된 경로로 이동 하거나 루트없이에 설치하도록 선택 ~/Library하면 시스템 파일 버전이 무시되지 않습니다.

사용자 또는 루트가 시스템 기본값을 수정할 수없는 이유는 El Capitan +의 SIP 권한 제한 때문입니다. SIP를 비활성화 할 수 있지만 일반적으로 권장되지 않습니다.

대신 유일하게 합리적인 해결책은 python virtualenv를 사용하는 것입니다.


답변