OS X El Capitan 업그레이드 후 pip를 사용하는 방법은 무엇입니까?


116

El Capitan 업데이트 후 pip install을 실행할 수 없습니다. 내가 얻는 오류는 pip가 설치하는 동안 새 폴더를 만들려고 할 때 "작업이 허용되지 않는다"는 것입니다.

creating /System/Library/Frameworks/Python.framework/Versions/2.7/share
    error: could not create '/System/Library/Frameworks/Python.framework/Versions/2.7/share': Operation not permitted

실제로 일반적으로 이러한 폴더에는 폴더 등을 만들 수 없습니다. 도움이되지 않는 sudo를 사용해 보았습니다. 또한 나는

sudo chflags nouchg /System/Library/Frameworks/Python.framework/Versions/2.7/

위의 내용도 도움이되지 않았습니다. 파이썬 라이브러리를 부드럽게 다시 설치하려면 어떻게해야합니까?


1
시스템에서 핍은 어디에 있습니까?
user151019

$ pip / usr / local / bin / pip
web_ninja

/Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg (python 2.7)에서 $ pip --version pip 7.1.2
web_ninja 22.29에

pip 설치 방법-/ System이 아닌 /Library/Python/2.7/site-packages에 기록해야 함
user151019

지금은 기억이 안납니다. 나는 문제라는 의견을 게시 한 후 brew를 사용하여 파이썬을 설치하고 pip의 위치를 ​​수정했다고 생각했습니다.
web_ninja

답변:


84

빠른 솔루션을 사용하는 것입니다 사제를 설치하기 python/usr/local/bin당신은 너무 pip사용자 수정 파이썬 프레임 워크에 대해 실행할 수 있습니다.

brew install python
pip --version

시스템 무결성 보호를 비활성화 하는 것도 옵션이지만 침입 탐지를 관리 할 수있는 인력이 있거나 개발자 / 시스템 관리자이며 테스트를 수행하거나 수행하지 않고 테스트해야하는 전문적으로 관리되고 방화벽이있는 서버 이외의 다른 시스템의 경우 권장하지 않습니다. 한모금.

ls -lO /System/Library/Frameworks/Python.framework/Versions/2.7/
csrutil status

당신은 것을 볼 수 제한 플래그가 SIP가 활성화되는 동안, 심지어 루트로 제거 할 수없는 설정됩니다.

homebrew를 사용하면 시스템 제공 버전과 별도로 pip 및 python을 관리 할 수 ​​있습니다. 보너스로, homebrew 프레임 워크는 자동화를 통해 유지 관리 및 패치 / 집안을 용이하게하도록 설계되었습니다.


1
브루 잉 설치 파이썬은 안정되지이며 무작위로 충돌
jayatubi

@jayatubi 어떤 패키지 또는 스크립트가 불안정합니까? brew 또는 python3에서 python 2.7.10을 설치하고 있으며 이전 버전과 호환되지 않는 것으로 알려져 있습니다. 필요에 따라 다소 안정적인 버전을 선호하는 경우 수십 가지 버전 중에서 선택할 수 있습니다.
bmike

1
그 동의 brew install python는 몇 시간 동안 시스템 파이썬을 사용하고있는 경우 다른 설정을 청소하지만 (예를 들어 루트 소유 파이썬 파일에서 요구 될 수있다, 가장 간단한 옵션 /usr/local/bin~/Library/Caches/pip)
RichVel

python.org/downloads/release/python-2712 에서 컴파일 된 파이썬 .pkg를 다운로드하면 10.8에서 잘 작동합니다. 홈브류에 대한 의견이 있으십니까? 감사합니다
데니스

@denis 원하는 brew버전을 쉽게 고정 할 수 있으므로 여러 버전을 관리하거나 정기적으로 업데이트해야합니다. 그래도 자신에게 맞는 것이 있다면 무엇이든 바꿔야한다고 주장하기가 어렵습니다.
bmike

77

SIP를 비활성화하거나 다른 Python 버전을 설치할 필요가없는 또 다른 실행 가능한 옵션은 다음을 사용하여 현재 사용자에 대해서만 모듈을 설치하는 것입니다.

pip install --user <modulename>

개인용 컴퓨터라면 가장 간단하고 안전한 솔루션입니다.


1
아마도 El Capitan은 / usr / bin / pip를 제공했지만 macOS Sierra는 제공하지 않았습니다.
sigjuice

1
시에라에서 작동
harryparkdotio

57

이 문제는 pip가 El Capitan에 IPython 용 맨 페이지를 설치하려고 할 때 종종 발생합니다. 빠른 수정은 다음과 같은 pip 명령을 사용하는 것입니다.

sudo -H pip install --install-option '--install-data=/usr/local' <package>

그러나 El Capitan의 SIP (System Integrity Protection)는 pip를 사용하여 여러 가지 나쁜 사례를 차단하므로 El Capitan에서 pip를 원활하게 실행하려면 몇 가지 사항을 더 변경해야합니다.

El Capitan의 SIP는 OS가 제공하는 Apple에서 제공하는 Python 버전의 pip를 사용할 때 세 가지 문제가 발생합니다.

  1. distutils는 Mac에서 두 가지 중요한 변수를 올바르게 설정하지 않으므로 pip는 아래에 헤더 및 기타 공유 파일 (예 : 맨 페이지)을 쓰려고합니다 /System/Library/Frameworks/Python.framework/Versions/2.7/. 이것은 좋지 않은 생각이지만 이전 버전의 OS X에서는 pip가 sudo와 함께 실행되면 성공했습니다. 그러나 SIP로 인해 El Capitan에서 실패합니다. 이것이 발생한 오류입니다. 그것은 같은 메시지를 제공합니다OSError: [Errno: 1] Operation not permitted: '/System/Library/Frameworks/Python.framework/Versions/2.7/share'

  2. Apple은 일부 패키지의 오래된 버전 /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/(예 : 6 개)을 설치합니다. 이전 버전의 OS X에서는 이들 중 하나의 최신 버전이 필요한 패키지를 설치할 sudo pip/System/폴더 에서 이전 버전을 자동으로 제거하고 에 최신 버전을 설치했습니다 /Library/Python/2.7/site-packages. 이것은 또한 나쁜 생각이었고 더 이상 SIP로는 불가능합니다. 그러나 이제 이전 패키지를 제거하는 동안 pip가 오류 메시지와 함께 충돌합니다. 그 메시지는 또한 OSError: [Errno: 1], 그러나 같은 메시지 뒤에 온다 Uninstalling six-1.4.1:. 예를 들어 https://github.com/pypa/pip/issues/3165를 참조하십시오 .

  3. Apple 버전의 Python 은 표준 사용자 액세스 패키지 설치 위치 /System/Library/Frameworks/Python.framework/Versions/2.7/python 검색 경로에 여러 디렉토리를 추가합니다 . 따라서 다른 곳 (예 :)에 최신 버전의 패키지를 설치하면 설치에 성공했다는 메시지가 표시되지만 python을 실행하면에서 이전 버전을 가져옵니다 . 또한 표준 라이브러리의 모듈과 이름이 같은 새 패키지를 사용할 수 없습니다.sudo -H pip install --ignore-installed six/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/

이러한 문제를 해결할 수 있지만 방법은 세 가지 질문에 대한 답변에 따라 다릅니다.

  1. Mac OS X 버전의 Python을 계속 사용하거나 직접 설치 하시겠습니까? 직접 설치하는 것이 가장 안전한 옵션이며 공식 Python 설치 프로그램, Homebrew 또는 Anaconda를 통해 수행 할 수 있습니다. @Sacrilicious가 지적한 바와 같이, 애플이 권장하는 것도 이것이다 . 자체 버전의 Python을 설치하는 경우 현재 설치된 모든 항목과 해당 패키지에 설치된 스크립트 (pip 포함)를 제거해야합니다. 그렇지 않으면 시스템에 설치된 Python 버전에 액세스하는 스크립트와 자체 설치에 액세스하는 일부 스크립트에 대한 성가신 경험이 있습니다./Library/Python/2.7/site-packages/usr/local/bin

시스템에 설치된 Python을 고수하려면 두 가지 결정을 더 내려야합니다.

  1. 모든 사용자 또는 자신을 위해 패키지를 설치 하시겠습니까? 모든 사용자를 위해 설치하면 관리 스크립트를 포함하여 Python을 사용하는 모든 프로그램이 설치 한 모든 패키지에 액세스 할 수 있습니다. 그러나 El Capitan의 자체 Python 사용을 방해 할 가능성은 먼 것입니다. (애플이 python -S항상 원하는 패키지를 얻을 수 있기를 희망 하지만 테스트 할 방법이 없다.) 자신의 사용자 계정으로 만 설치하면 시스템 파이썬 설치를 방해 할 가능성이 없다. 참고 : 시스템 전체 설치에서 사용자 전용으로 전환하려는 경우 현재 설치된 /Library/Python/2.7/site-packages스크립트 및 관련 스크립트 를 모두 제거 할 수 있습니다 /usr/local/bin.

  2. OS X 버전의 Python (아래 /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/) 과 함께 설치된 추가 패키지를 숨기 거나 검색 경로에 유지 하시겠습니까? 이 패키지의 최신 버전이 필요할 때 사용자가 액세스 할 수있는 위치에 자동으로 설치되도록 숨길 것을 권장합니다. 이 디렉토리를 숨기지 않으면 pip에서 기존 패키지를 제거 할 수 없다는 메시지가 표시되는 경우가 있습니다 (설치중인 다른 패키지가 필요함). 이 경우 pip install --ignore-installed <package>새 버전을 설치하고 시스템 설치 버전을 숨기려면를 실행해야합니다 . 그러나 전체를 숨기면/System/.../Extras/...pip를 통해 사용할 수없는 일부 Apple 패키지 (예 : CoreGraphics 및 bonjour)에 대한 액세스 권한이 손실됩니다. (필요한 경우 사이트 패키지 디렉토리로 심볼릭 링크하여 액세스 할 수 있습니다.)

이제 해결 방법이 있습니다. 운영 체제에서 사용하는 Python 패키지를 실수로 교체하거나 제거하지 않으려면 모든 버전의 OS X에서이 방법을 사용하는 것이 좋습니다. 그러나 OS X El Capitan (10.11)에서 Apple이 제공하는 Python 버전의 사용자 설치 패키지를 사용하려면 필수입니다.

핍 설치

이미이 작업을 수행했을 수도 있지만 그렇지 않은 경우 다음 명령을 사용하여 모든 사용자에 대해 pip를 설치할 수 있습니다 .

sudo -H easy_install pip
# pip script will be installed in /usr/local/bin

또는 자신의 사용자 계정에만 pip를 설치하려면이 명령을 사용하십시오 .

easy_install --user pip
# pip script will be installed in ~/Library/Python/2.7/bin

공유 파일 위치 관리

모든 사용자를위한 패키지를 설치하는 경우 https://github.com/pypa/pip/issues/426 에서 다음 행을 사용하여 .pydistutils.cfg 파일을 작성 하십시오 .

[install]
install-data=/usr/local
install-headers=/usr/local

일반적으로을 사용하는 sudo -H pip ...경우이 파일을 /var/root(루트 사용자의 홈 디렉토리)에 두어야합니다 . 일반적으로을 사용하는 sudo pip ...경우이 파일을 자신의 홈 디렉토리 (~)에 두어야합니다.

이 설정은 pip가 아래의 헤더 및 맨 페이지와 같은 공유 항목을 쓰지 못하게 /Library/System합니다. (이 답변의 맨 위에있는 명령은 동일한 버전의 빠른 버전입니다.)이 설정은 darwin 관련 코드 입력에서 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/install.py이러한 변수를 루트 쓰기 가능 위치로 설정하지 못하기 때문에 필요 합니다 (다른 변수를 올바르게 설정하더라도). 이에 대한 자세한 내용은 https://github.com/pypa/pip/issues/3177에 있습니다.

자신의 사용자 계정에 대해서만 패키지를 설치하면 공유 항목이 아래에 자동으로 설치됩니다 ~/Library/Python/2.7/. 그러나 ~ / .profile에 다음 줄을 추가하여 필요할 때 공유 항목을 찾을 수 있습니다.

export PATH=~/Library/Python/2.7/bin:$PATH
export MANPATH=~/Library/Python/2.7/share/man:$MANPATH

참고 : 변경 사항을 적용하려면 새 쉘을 시작하거나 명령 행에서이를 실행해야합니다. hash -r최근에 경로에서 오래된 스크립트를 제거한 경우 에도 실행할 수 있습니다.

파이썬 경로 관리

설치 한 패키지가 시스템 설치 패키지보다 Python의 검색 순서에서 더 높은지 확인해야합니다. 가장 쉬운 방법은 .pth파일을 사용하는 것입니다. 이것은 이 페이지의 다른 곳에서 @Sacrilicious의 제안을 따르지만 사용자 사이트 패키지 디렉토리는 시스템 전체 사이트 패키지 디렉토리보다 먼저 검색되고 표준 라이브러리와 Apple의 Extras 디렉토리 (둘 다 / System / 아래)에서 모두 검색됩니다. ..). /System/.../Extras원하는 경우 검색 경로에서 생략 됩니다.

fix_mac_path.pth아래 텍스트로 이라는 파일을 만듭니다 . 모든 사용자를위한 패키지를 설치하는 경우에 fix_mac_path.pth 배치해야합니다 /Library/Python/2.7/site-packages. 자신의 사용자만을 위해 설치하는 경우 fix_mac_path.pth ~ / Library / Python / 2.7 / lib / python / site-packages에 있어야합니다. (이 파일은 원하는 이름을 가질 수 있지만이 위치 중 하나 또는 둘 모두에 위치해야하며이 .pth파일의 모든 텍스트는 한 줄에 있어야합니다.)

다음에 Apple 설치 패키지를 숨기려면 다음을 수행하십시오 /System/.../Extras.

먼저 다음 명령 중 하나를 실행하여 Apple 제공 버전과 독립적으로 pip / setuptools의 작업 사본을 얻으십시오.

pip install --ignore-installed --user setuptools   # your account only
# or
sudo -H pip install --ignore-installed setuptools  # all users

그런 다음 위에 fix_mac_path.pth지정한 위치 에 다음 코드를 입력하십시오 .

import sys; std_paths=[p for p in sys.path if p.startswith('/System/') and not '/Extras/' in p]; sys.path=[p for p in sys.path if not p.startswith('/System/')]+std_paths

Apple이 설치 한 패키지를 계속 사용 하려면 다른 setuptools 사본을 설치할 필요가 없습니다. fix_mac_path.pth위에서 지정한 위치 에 다음 코드를 입력하십시오 .

import sys; std_paths=[p for p in sys.path if p.startswith('/System/')]; sys.path=[p for p in sys.path if not p.startswith('/System/')]+std_paths

그런 다음 python -m site경로 검색 순서가 올바른지 확인하는 데 사용할 수 있습니다 .

패키지 설치

그런 후에 다음 명령 중 하나를 사용하여 새 패키지를 설치할 수 있습니다.

모든 사용자의 경우 :

sudo -H pip install <package>

자신의 사용자 :

pip install --user <package>

대안이있는 매우 명확한 지시 사항. 이 안내서에 따라 "6"라이브러리 문제를 극복하여 mitmproxy를 설치할 수있었습니다.
Paul Chernoch

1
이것은 실제로 스택 오버 플로우에서 발생한 가장 유익하고 완전하며 유용한 답변 중 하나입니다. 잘 했어 고마워
cmsjr

@cmsjr, 감사합니다! 무슨 일이 일어나고 있는지 알아내는 데 시간이 걸렸습니다.
Matthias Fripp

4
내가 지금까지 본 영역에서 가장 명확하고 가장 완전한 설명, 특히 기존 시스템 파이썬 혼란 정리-감사합니다! brew-installed Python을 사용하는 것이 더 쉽고 sudo가 필요없는 깔끔한 설정을 제공하기 때문에 내 주요 개선 사항을 더 강력하게 권장합니다. 이것은 개발 프로젝트를위한 virtualenvs에 추가 된 것입니다.
RichVel

정말 재앙이야 신의 축복이 있기를
Matt M.

31

먼저, 문제를 해결하기위한 방법으로 SIP를 비활성화하지 않습니다. 이것이 폴더 생성에 실패한 이유이지만 죄송합니다. 둘째, 자신의 Python을 설치할 때 pyObjC를 통한 브리지처럼 Apple이 생각한 모든 장점을 잃습니다.
(나는 개발자 인 경우 자신이 직접 설치해야 한다고 말하고/usr/local , 양조로 쉽게 할 수있는 것에 반대합니다 .)

논리적으로 SIP를 차단하지 않는 곳에 설치하는 것이 좋을 것입니다. 이것은 거의 확실하게 pip가 해결하는 일부 종속성입니다. 설치를 수행 할 위치에 pip를 알려주는 것은 / System의 기존 항목을 무시하는 것만 큼 해결되지 않습니다. 예를 들어 sixSIP는 pip를 유발 하는 많은 일반적인 설치에 대한 종속성을 검사합니다. 시도하고 업그레이드 할 때 스스로를 깨뜨릴 수 있습니다. 실제로 /Library/Python/2.7/site-packages에 설치하는 것은 pip의 기본 동작 --ignore-installed이므로 업데이트 된 버전의 종속성을 강제로 설치하도록 지시하면됩니다.
안타깝게도 대화식 세션이나 스크립트에서이 모듈을 가져 와서 뚱뚱한 오류가 발생할 수 있습니다. 여전히 / System의 업그레이드되지 않은 패키지를보고 있습니다!

초기 setuptools 일부터 파이썬은 그 조회를 명시 적으로 만들 수있는 방법을 가지고 있습니다. 그건 좀 이상한 보이는, (보안 의식 및 검사하지 않고 목록의 상단에 밀어의 무례에 대해 흥분하지 않은 사람들을에 일시 정지를 유도해야하지만) 당신이로 끝나는 파일을 배치 할 수 있습니다 .pth( 예를 들어 'elcap.pth') /Library/Python/2.7/site-packages를 입력하여 다음 내용으로 해당 디렉토리를 조회 순서의 맨 앞으로 밉니다.
import sys; sys.path = ['/Library/Python/2.7/site-packages'] + sys.path

새 세션을 시작하면 빠른 python -m site경로로 첫 번째 슬롯에 해당 경로를 삽입했으며 모듈 가져 오기가 작동하는지 확인할 것입니다.

어쨌든 pip의 --user옵션으로 설치 하거나 virtualenv를 사용해보십시오 . 어쨌든 대부분의 사람들에게 가장 좋은 방법입니다.


1
이제 이것은 우아하고 간단한 "시스템 파이썬을 포기하고 양조"하는 솔루션과 대립합니다. 빠르고 더러운 것이 필요한 경우에는 노력할 가치가 없지만 pyObjC와 하나의 파이썬을 유지하면 큰 장점이 있습니다.
bmike

2
더 pythonic하고 현명한 --user것은 virtualenv 로 설치 하거나 사용하는 것입니다. 나는 sysadmin으로서 시스템에 한 번 설치하고 사용자가 시스템을 무시할 수 있어야한다는 것을 염두에두고 있습니다. 이 솔루션에 대한 반대 의견은 시스템이 변경된 경로를보고있을 것이지만 easy_install이 .pth 파일을 쓸 수도 있다는 선례가 있습니다.
Sacrilicious

2
양조 방법이 쉬운 지 잘못된 지 모르겠습니다. 문제를 해결하는 문제이며, 양조장이 새로운 장난감을 가지고 노는 데 얼마나 많은 노력이 필요한지 혼자 생각하면서 문제를 훌륭하게 해결하고 있습니다. .3, python3.5, MongoDB, Node4.2.1)은 명령을 입력하는 것과 같은 편리한 방법으로 재 컴파일, 업데이트 및 스 래시를 제거합니다.-그래서 쉬운 길을 택합니다. :) 제공된 OS X 버전의 파이썬은 Cocoa and Threads 지원과 내가 전에 사용하지 않은 많은 패키지를 제외하고는 매우 다르며 실제로 Xcode / Kernel 자료 더미를 컴파일했습니다.
PJJ

elcap.pth를 /Library/Python/2.7/site-packages에 추가했습니다. 이제 해당 경로가 sys.path의 0 및 2 인덱스에 나열되어 있습니다. 그런 다음 시도 sudo pip install --ignore-installed ipython하고 "psetup을 위해 setup.py 설치 실행"이 실행될 때까지 pip는 여전히 /System/Library/Frameworks/Python.framework/Versions/2.7/share에서 무언가를 업그레이드하려고 시도하고 오류가 발생합니다.
kojiro

virtualenv를 설치하려면 pip를 사용해야하므로 실제로 pip 사용과 관련된 문제는 해결되지 않습니다. 그대로, 나는 그것을 설치 pip --user하고 virtualenv는 여전히 작동하지 않습니다.
user5359531

4

내가 생각하는 그것의 때문에 SIP 또는 시스템 무결성 보호 , 윈도우 안티 바이러스 같은 느낌 :) 그리고 당신은 OS X의 시스템 폴더에 변경하려는 내용을 중지 실시간 파일 보호의 일종. Apple은 단순히 시스템 수정을 비활성화하기로 결정했습니다. 인터넷 및 기타 컴퓨터 관련 악의 세력으로부터 SIP 를 보호합니다.

SIP비활성화 하려면 Mac을 부팅 할 때 Command + R 키를 동시에 눌러 Recovery HD로 부팅해야합니다.

유틸리티 메뉴에서 터미널을 열고을 입력 csrutil disable한 다음 Enter 키를 누릅니다. Apple 메뉴로 이동하여 재부팅하십시오.

지금부터 SIP가 비활성화됩니다. 나는 오래 전에 그것을 사용하지 못하고 아무것도 발견하지 못했습니다. 일부 프로세스는 불평하는 것처럼 보이지만 항상 OS X에서 수행되므로 시스템 무결성 '보호'가 부족하여 발생했는지 확실하지 않습니다.

제 팁은 SIP를 완전히 없애거나 모든 오픈 소스 / 개발 소프트웨어에 대해 homebrew를 사용하는 것입니다. Homebrew는 / usr / local 디렉토리를 사용하여 설치하고 다른 시스템 구성 요소와 충돌하지 않으며 homebrew 빌드는 os x apple 빌드보다 최신입니다.


1
이 답변에 투표를하는 것은 의미가 없습니다. 그러나 누군가가 단지 까다로운 것일까 요? 나에게서 +1 ...
bmike

1
고마워 친구! 약간의 유머를 시도했지만 모든 사람이 그것에 대한 나의 이해와 일치해야하는 것은 아닙니다.)
PJJ

흠- 희생의 대답 을 읽은 후에 이것이 SIP인지 확실하지 않습니다. 생각?
bmike

1
이것은 실제로 SIP의 하위 디렉토리로 폴더를 만들지 못하게합니다 (man 페이지와 같은 것) /System. 10.11 기준 한도. 우리가 꼬집어 있으면 csrutil을 사용하여 일시적으로 비활성화 할 수 있습니다. 떠나 그것을 떨어져 것은 ... 우리가 좋은 일을 할 수없는 이유.
Sacrilicious

나는 항상 그것을 벗어났다 : statusSystem Integrity Protection status: enabled (Custom Configuration). Configuration: Apple Internal: disabled Kext Signing: disabled Filesystem Protections: disabled Debugging Restrictions: disabled DTrace Restrictions: disabled NVRAM Protections: disabled 그리고 내 시스템이 꽉 닫혀 있고 사용자 정의 된 이후 그것을 활성화 할 이유가 없다
PJJ

4

pip3 install <package>대신 사용 하여의 권한 문제를 해결했습니다 pip.


4

나를 믿으십시오. 도서관이 그 길에 아무것도 쓰지 않기를 정말로 바랍니다.

이전에는 권장되지 않았지만에 쓸 수 /System/Library/Frameworks/Python.framework/Versions/2.7/는 있지만 Apple SIP로 인해 지원되지 않으므로 라이브러리 소유자 문제입니다. 이 업데이트에서 올바르게 작동하려면 패키지 배포를 업그레이드해야합니다. 대부분의 패키지가 업데이트되어 해당 컨텐츠를에 설치 /Library/Python/2.7/site-packages했지만 일부 패키지는 업데이트되지 않았습니다.

필자의 경우 Systemlet .h폴더에 파일 을 쓰려고 시도하는 것은 greenlet 라이브러리였습니다 .

고치는 방법 : sudo -H pip install greenlet --install-option "--install-headers=/Library/Python/2.7/lib/python/includes/" 그때sudo -H pip install gevent

numpy의 경우 수정은 sudo -H pip install --ignore-installed -U numpy입니다.

다른 라이브러리의 경우, 수정 다를 https://github.com/pypa/pip/issues/3177pip install --ignore-installed six하고 pip install --user(마지막 하나는 /User//Library/Python/2.7/ 경로에 모든 것을 설치). 이 게시물에 대한 최신 답변 참조 : https://apple.stackexchange.com/a/210021/169157

입력 python -m site하면 sys.path = [ ... '/Library/Python/2.7/site-packages', ... ] 시스템 경로 앞에 포함해야 합니다. 그것이 작동하는 이유입니다.


3

나는 다음과 같이했다 :

brew install python

그런 다음 파이썬이 설치된 후 :

sudo easy_install pip

3
brew install python이미 pip를 설치합니다. easy_install을 통해 pip를 설치하면 혼란스러운 문제가 발생할 수있는 두 개의 pip 설치가 발생할 수 있습니다.
NSSynapse 12

3

이 문제에 대한 매우 멋진 해결책은 virtualenv (virtualenvwrapper)를 사용하는 것입니다. 프로젝트에 대한 새로운 환경을 만든 후에는 문제없이 pip를 사용할 수 있으므로 virtualenvwrapper를 사용 했으며이 두 줄은 문제를 해결합니다.

mkproject <project_name>
pip install <package_name>

virtualenv 설치를 어떻게 권장합니까? pip install virtualenv또는 핍이 작동하지 않으므로 sudo easy_install이미 존재 하는 항목에 +1 해야합니다 . 건배
bmike

1
pip는 권한 문제로 인해 작동하지 않으므로 sudo easy_install작동합니다.
neosergio

2

Mac에 python3이 설치되어 있고 원래 python2.7에는 OSX가 제공됩니다. 그래서 python3을 호출하고 싶을 때마다 $ python3 ...을 입력하십시오. 아마도 $ python3 get-pip.py를 시도해야합니다. 거의 당신과 거의 같은 문제가있을 때 저에게 효과적입니다.


2

요약

System easy_install을 사용하여 pip를 설치하고 로컬 easy-install.pth가 시스템 라이브러리를 참조했기 때문에 Mac OS X 10.11.6 (SIP가 있음) 에서이 문제가 발생했습니다.
pip로 후속 패키지를 설치할 때 일부 종속성이 이전 시스템 Python 라이브러리로 해결되었습니다.
해결책은 로컬로 설치된 라이브러리를 제거하고 https://www.python.org/downloads/ 에서 로컬 파이썬 버전 (pip 포함)을 다시 설치 하여 시스템과 로컬로 설치된 python 인스턴스가 별도로 유지되도록하는 것입니다.
@mfripp의 답변에 fix_mac_path.pth 수정 프로그램을 사용해 보았지만 클리너를 제거하고 다시 설치했습니다.

원인

(이 단계를 따르지 마십시오)

Ansible을 설치하는 동안이 문제가 발생했습니다. pip를 통해 OS X에 설치하기 위해 Ansible 문서를 따랐습니다.
먼저 pip를 설치했습니다. sudo easy_install pip
이것은 pip를 설치할 때 System easy_install at을 사용하고 /usr/bin/easy_installpip를 /Library/Python/2.7/site-packages/pip
설치했을 때 다음과 같은 경고가 표시되었지만 무시하고 맹목적으로 보았다.

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'python_requires'
  warnings.warn(msg)
warning: no previously-included files found matching '.coveragerc'
...
Adding pip 9.0.1 to easy-install.pth file
Installing pip script to /usr/local/bin
...
Installed /Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg
...
Finished processing dependencies for pip

나중에 보면 /Library/Python/2.7/site-packages/easy-install.pth, 다음과 같이 보입니다.

import sys; sys.__plen = len(sys.path)
./pip-9.0.1-py2.7.egg
import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)

그런 다음 pip를 통해 ansible을 설치했습니다.

sudo pip install ansible

요구 사항이 이미 시스템 라이브러리에 의해 충족되었다는 메시지가 나타납니다.

Requirement already satisfied: setuptools in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from ansible)  
Requirement already satisfied: six>=1.4.1 in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from cryptography>=1.1->paramiko->ansible)

그런 다음 ansible을 실행할 때이 문제가 발생했습니다.

VersionConflict: (setuptools 1.1.6 (/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python), Requirement.parse('setuptools>=11.3'))

그리고 pip 점검은 paramiko가 새로운 setuptools를 필요로한다고 밝혀

pip check paramiko
matplotlib 1.3.1 requires tornado, which is not installed.
matplotlib 1.3.1 requires nose, which is not installed.
cryptography 1.7.2 has requirement setuptools>=11.3, but you have setuptools 1.1.6.

사용할 수있는 setuptools (버전 없음) 만 필요하므로 pip는 시스템 setuptools가 만족하는 종속성을보고했습니다.

해결책

나는 암시 공정 사용하여 로컬 파이썬 라이브러리를 제거하여 그것을 해결 https://docs.python.org/2.7/using/mac.html#getting-and-installing-macpython을
내게이 참여를 들어

sudo rm -rf /Library/Python

그런 다음 / usr / local / bin과 같은 심볼릭 링크와 실행 파일을 제거했습니다.

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*

등등. 나는 또한 모든 응용 프로그램을 제거

sudo rm -rf /Applications/Python\ 2.7/

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

이것은 로컬 파이썬과 핍의 설치 /Library/Frameworks/Python.framework/Versions/2.7와 심볼릭 링크 /usr/local/bin의 시스템 라이브러리에서 별도의 인 /System/Library/Frameworks/Python.framework/usr/bin 내가 얻을를

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

그리고 pip list

setuptools (28.8.0)
six (1.10.0)

ansible은 이제 나를 위해 작동


1

나를 PATH위해 pip, 실종되었습니다 , 이것은 실행하여 확인되었습니다.python -m pip

두 잠재적 인 솔루션을 여기에 추가, pip뒤로 PATH. 내 경우에는 pip어쨌든 오래되었으므로 업그레이드하면 해결되었습니다.

python -m pip install --upgrade pip

✗ pip --version pip 9.0.1 from /Library/Python/2.7/site-packages (python 2.7)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.