OSX El Capitan에서 setuptools 업그레이드
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)
and ansible now works for me because the Mac OS Python libraries are not referenced by the new install.
Note that because of the installer setting $PATH, which python
is now /Library/Frameworks/Python.framework/Versions/2.7/bin/python
and /usr/local/bin/python
is a symlink to this.
If you want the system Python you'll have to use /usr/bin/python or change the $PATH
The answer is that you cannot update setuptools on OSX for the factory python that ships with the OS. The reason is that the files in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
cannot be removed or modified by the user. Not only the normal user but even if you have root permissions you will be unable to modify those files.
Sure you can use various other methods to install a newer version of setuptools but this will not override the default system package. Meaning if you go the suggested route of use the --user python
flag, or you choose to install them without root into ~/Library
, these will not override the system files version.
The reason you or root are unable to modify the system defaults is due to SIP permission restrictions in El Capitan+. You could disable SIP but this is generally not recommended.
Instead the only reasonable solution is to use a python virtualenv.
참고URL : https://stackoverflow.com/questions/33234665/upgrading-setuptools-on-osx-el-capitan
'developer tip' 카테고리의 다른 글
SKScene에서 버튼 설정 (0) | 2020.10.09 |
---|---|
Android에서 JSON 배열 (Json 개체 아님)을 구문 분석하는 방법 (0) | 2020.10.09 |
transformClassesAndResourcesWithProguardForRelease FAILED (0) | 2020.10.09 |
Windows 배치 스크립트 시작 프로그램 및 종료 콘솔 (0) | 2020.10.09 |
"|"를 사용하여 grepping (0) | 2020.10.09 |