OSX El Capitan : sudo pip install OSError : [Errno : 1] 작업이 허용되지 않습니다


127

내가 실행할 때 :

sudo pip install ipython

다음과 같은 오류가 발생합니다

OSError : [Errno : 1] 허용되지 않는 작업 : '/System/Library/Frameworks/Python.framework/Versions/2.7/share'

마지막으로 실행 된 명령은 위에 제공된 디렉토리를 작성하려고합니다.

또한 다음 명령은 오류를 제공하지 않고 iPython을 설치하지 못합니다.

sudo pip install --user python

(이 OS의 다른 사람들이 동일한 문제를 볼 수 있도록 Mac OS X El Capitan을 사용하고 있습니다.)



$PATH설치된 --user 패키지의 실행 파일을 호출 할 수 있도록 수정 방법을 설명하는 답변을 추가했습니다 . stackoverflow.com/a/47102398/117471
Bruno Bronosky

2
sudo와 함께 사용해서는 안됩니다 --user. 어떤 --user일은에 설치입니다 ~/Library보다는 /Library당신은 사용할 필요가 없습니다 sudo거기에 설치합니다. 그러나로 설치 sudo하면 디렉토리 및 파일은 모두 소유합니다 root. 그런 다음 sudo다른 작업을 수행해야합니다. sudo다른 용도 로는 사용하지 않아야합니다. 그러면 정직한 실수조차도 오류를 던지거나 데이터를 파기 할 수 있습니다.
브루노 Bronosky

답변:


205

지시하는 sudo pip install것은 본질적으로 잘못되었습니다.

당신이해야한다고 튜토리얼이 있다면 sudo pip이 패키지에 대해 버그를 제기하십시오. 시간이 sudo pip끊어진 연습으로 판명 되었기 때문에 저자는 파이썬 커뮤니티를 교육하지 않고 있습니다.

OSX El Capitan은 운영 체제 파일의 손상을 방지하는 메커니즘을 도입했습니다 . /System/Library/Frameworks/Python.framework/Versions/2.7/share보호 된 위치 중 하나입니다. 일반 사용자는 파일을 넣거나 쓸 이유가 없습니다 . 이것은 운영 체제 자체가 이러한 파일에 의존하기 때문에 sudo pip위의 모든 힘으로 무조건 파일을 덮어 쓰기 때문입니다. 일반적으로 나쁜 일은 일어나지 않지만 기회는 있습니다. Apple은 실수로 설치를 차단하기 위해 OS 사용자를 보호하려고합니다.

대신 IPython과 같은 Python 패키지를 사용자의 홈 폴더에 로컬로 설치해야합니다 . 가장 쉬운 방법은 만드는 것입니다 가상 환경을 , 활성화 하고 실행 가상 환경에서.

예:

cd ~  # Go to home directory
virtualenv my-venv
source my-venv/bin/activate
pip install IPython

더 많은 정보

또는 할 수 있어야합니다 pip install --user. 그러나 다시 sudo가 필요하지 않으며PATH 환경 변수 를 수동으로 설정해야 합니다.


5
더 VIRTUALENV가 필요없는 당신은 세계적으로 (예를 들어 /Library/Python/2.7/site-packages), 모듈을 설치하여 아래에있는 내 솔루션을 시도 할 경우 easy_install stackoverflow.com/a/33463702/3078330
smat88dd

3
'스도 핍'이 나쁘다는이 관점에 대한 인용이 있습니까? 나는 당신이 준 인용에서 sudo에 대한 토론을 보지 못하고 자습서는 virtualenvs를 'pip install virtualenv'로 만드는 첫 번째 단계를 나열합니다.이 단계는 조언을 따르려는 순환 종속성을 만드는 것처럼 보입니다.
Von

1
@Von : pip install virtualenv내장 된 python -m venvvirtualenv와 함께 제공되므로 Python 3.4+에는 더 이상 필요하지 않습니다 . docs.python.org/3/library/venv.html
Mikko Ohtamaa

29
모든면에서 원래 질문은 다루지 않습니다. IPython을 설치하여 전 세계 (내 컴퓨터의 모든 사용자가 사용할 수 있음)로 만들려고하는데 virtualenv도 pip install --user IPython도움이 되지 않습니다 . 또한 (적어도 내 컴퓨터)에 명령 pip install --user IPython을 배치하지 못했습니다 . ipython$PATH
jpetazzo

3
당신은 저를 가르치고 또한 시간을 절약했습니다. 큰 감사는 sudo 사용을 중단하고 모든 것이 작동했습니다! 좋은 대답입니다.
Parth Gupta

24

나는 같은 문제가 있었지만를 사용 easy_install "module"하면 문제가 해결되었습니다.

왜 그런지 잘 모르겠지만 pip와 easy_install은 다른 설치 위치를 사용하며 easy_install이 올바른 위치를 선택했습니다.

편집 : 다시 확인하지 않고 주석 때문에; 서로 다른 (OSX 및 brew-installed) 설치가 서로 간섭하는 것 같습니다. 따라서 언급 한 도구가 다른 위치를 가리 킵니다 (다른 설치에 속하기 때문에). 일반적으로 한 설치의 도구가 동일한 폴더를 가리키는 것으로 알고 있습니다.


두 개의 다른 Python 인터프리터가 설치되어 있고 다른 인터프리터 easy_install에 맞게 구성 되어 있습니까?
Mikko Ohtamaa

나는 2-3 다른 파이썬 버전이 설치되어있는,하지만 내가 가진 easy_install그 모든 : easy_install-2.6, easy_install-2.7,easy_install-3.5
smat88dd

대부분의 경우 pipeasy_install다른 파이썬의 가리 킵니다. whichUNIX 명령으로 이것을 알아 낸 다음 pip사용할 올바른 명령을 알아낼 수 있습니다.
Mikko Ohtamaa

1
업그레이드하기 전에 이전 OSX에서 사전 설치해야합니까?
Mikko Ohtamaa

1
pip와 easy_install은 서로 다른 설치 위치 를 사용합니다. 아니요, 정확히 동일한 위치를 사용합니다. 그것은 @MikkoOhtamaa 자신의 의견을 보여 주려했다으로 사고. 이것은 분명히 대답이 아닙니다.
Piotr Dobrogost

19

Python을 다시 설치해야합니다.

brew reinstall python

양조를하려면 양조장 홈페이지를 참조하십시오 .


두 번째입니다. 나는 brew install python그때 나는 pip이미 자리에 있다고 생각 합니다. 그 후 pip일 설치를 (내가 / 권한과 설치 횟수 핍 모르나요 w 비슷한 문제가 있었다)
travelingbones을


11

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


10
참고로, 이것은 pip3일반적으로 사용자가 설치하는 Python 3을 사용 하기 때문에 효과적 입니다. 반면에 Python 2 (2.7)는 macOS와 함께 제공되며 최고 등급의 답변에서 설명한대로 보호됩니다.
Khanh Nguyen

10

TL; DR $ PATH 수정

  1. pip install --user package_nameCLI 실행 파일을 포함해야하는 패키지를 설치하는 데 사용하십시오 .
  2. 파이썬 쉘을 시작하고 import package_name
  3. lib/python/...출력 에서 발생하는 위치를 찾아서bin
  4. 아마 $HOME/Library/Python/2.7/bin

세부

macOS 10.11 El Capitan의 새로운 시스템 무결성 보호로 인해 더 이상 할 수 없습니다 sudo pip install. 우리는 여기서 그 장점을 논하지 않을 것입니다.

또 다른 대답은 당신이 pip install --user어느 것이 옳 아야하는지 설명 합니다. 그러나 그들은 당신을 뒷골목으로 보내어 당신 $PATH이 설치된 실행 파일에 액세스 할 수 있도록 당신 에 대해 무엇을 해야할지 알아 냈습니다 . 다행히도 관련없는 질문에 대한 비슷한 요구를 이미 해결했습니다 .

다음은 내 시스템 중 하나에서 문제를 해결 한 방법에 대한 기록입니다. 나는 $PATH당신의 시스템이 나의 것과 다를 수 있기 때문에 나를 위해 일한 것보다는 모든 것을 포함시키고 있습니다. 이 과정은 모든 사람에게 효과적입니다.

$ pip install --user jp
Collecting jp
  Downloading jp-0.2.4.tar.gz
Installing collected packages: jp
  Running setup.py install for jp ... done
Successfully installed jp-0.2.4

$ python -c 'import jp; print jp'
<module 'jp' from '/Users/bbronosky/Library/Python/2.7/lib/python/site-packages/jp/__init__.pyc'>

$ find /Users/bbronosky/Library/Python -type f -perm -100
/Users/bbronosky/Library/Python/2.7/bin/jp

$ which jp

$ echo -e '\n''export PATH=$HOME/Library/Python/2.7/bin:$PATH' >> ~/.bashrc

$ bash # starting a new bash process for demo, but you should open a new terminal

$ which jp
/Users/bbronosky/Library/Python/2.7/bin/jp

$ jp
usage: jp <expression> <filepath>

10

같은 오류

Installing collected packages: six, pyparsing, packaging, appdirs, setuptools
Exception:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_set.py", line 784, in install
    **kwargs
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_install.py", line 851, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_install.py", line 1064, in move_wheel_files
    isolated=self.isolated,
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/wheel.py", line 345, in move_wheel_files
    clobber(source, lib_dir, True)
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/wheel.py", line 323, in clobber
    shutil.copyfile(srcfile, destfile)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 83, in copyfile
    with open(dst, 'wb') as fdst:
IOError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/six.py'

그리고이 문제를 해결 --user하지 않고 사용합니다.sudo

$ pip install --user scikit-image h5py keras pygame
Collecting scikit-image
  Downloading http://mirrors.aliyun.com/pypi/packages/65/69/27a1d55ce8f77c8ac757938707105b1070ff4f2ae47d2dc99461bfae4491/scikit_image-0.13.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (28.1MB)
    100% |████████████████████████████████| 28.1MB 380kB/s
Collecting h5py
  Downloading http://mirrors.aliyun.com/pypi/packages/b7/cc/1c29b0815b12de2c92b5323cad60f724ac8f0e39d0166d0b9dfacbcb70dd/h5py-2.7.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (4.5MB)
    100% |████████████████████████████████| 4.5MB 503kB/s
Requirement already satisfied: keras in /Library/Python/2.7/site-packages
Requirement already satisfied: pygame in /Library/Python/2.7/site-packages
Requirement already satisfied: matplotlib>=1.3.1 in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from scikit-image)
Requirement already satisfied: six>=1.7.3 in /Library/Python/2.7/site-packages (from scikit-image)
Requirement already satisfied: pillow>=2.1.0 in /Library/Python/2.7/site-packages (from scikit-image)
Requirement already satisfied: networkx>=1.8 in /Library/Python/2.7/site-packages (from scikit-image)
Requirement already satisfied: PyWavelets>=0.4.0 in /Library/Python/2.7/site-packages (from scikit-image)
Collecting scipy>=0.17.0 (from scikit-image)
  Downloading http://mirrors.aliyun.com/pypi/packages/72/eb/d398b9f63ee936575edc62520477d6c2353ed013bacd656bd0c8bc1d0fa7/scipy-0.19.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (16.2MB)
    100% |████████████████████████████████| 16.2MB 990kB/s
Requirement already satisfied: numpy>=1.7 in /Library/Python/2.7/site-packages (from h5py)
Requirement already satisfied: theano in /Library/Python/2.7/site-packages (from keras)
Requirement already satisfied: pyyaml in /Library/Python/2.7/site-packages (from keras)
Requirement already satisfied: python-dateutil in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: tornado in /Library/Python/2.7/site-packages (from matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: pyparsing>=1.5.6 in /Users/qiuwei/Library/Python/2.7/lib/python/site-packages (from matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: nose in /Library/Python/2.7/site-packages (from matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: olefile in /Library/Python/2.7/site-packages (from pillow>=2.1.0->scikit-image)
Requirement already satisfied: decorator>=3.4.0 in /Library/Python/2.7/site-packages (from networkx>=1.8->scikit-image)
Requirement already satisfied: singledispatch in /Library/Python/2.7/site-packages (from tornado->matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: certifi in /Library/Python/2.7/site-packages (from tornado->matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: backports_abc>=0.4 in /Library/Python/2.7/site-packages (from tornado->matplotlib>=1.3.1->scikit-image)
Installing collected packages: scipy, scikit-image, h5py
Successfully installed h5py-2.7.0 scikit-image-0.13.0 scipy-0.19.0 

비슷한 문제가 발생하는 사람에게 도움이되기를 바랍니다.


3
sudo와 함께 사용해서는 안됩니다 --user. 어떤 --user일은에 설치입니다 ~/Library보다는 /Library당신은 사용할 필요가 없습니다 sudo거기에 설치합니다. 그러나로 설치 sudo하면 디렉토리 및 파일은 모두 소유합니다 root. 그런 다음 sudo다른 작업을 수행해야합니다. sudo다른 용도 로는 사용하지 않아야합니다. 그러면 정직한 실수조차도 오류를 던지거나 데이터를 파기 할 수 있습니다.
브루노 Bronosky

9

나는 같은 문제가 있었다. 다른 사람들이 언급했듯이 sudo로 pip install을 실행하지 마십시오. 운영

brew doctor 

경고를 수정하면 pip 설치를 진행할 수 있습니다.


6

여러 가지 이유로 El Capitan에서 pip를 사용하는 것은 어렵습니다.

  1. OS X은 일부 distutils 변수를 올바르게 설정하지 않으므로 pip는 아래 위치에 보조 파일을 설치하려고합니다 /System/Library/. El Capitan은 이것을 차단합니다. 이것은 오류입니다.
  2. OS X에는 아래에 오래된 패키지가 많이 /System/Library/있습니다. pip는 종종 이것들을 업그레이드하기를 원하지만 El Capitan에서는 할 수 없습니다.
  3. OS X /System/Library//Library/Python/2.7/site-packages(시스템 전체의 파이썬 패키지 위치) 보다 파이썬 검색 순서 가 더 높 으므로 일부 패키지의 최신 버전을 설치하더라도 이전 패키지는 여전히로드되어 일부 종속성을 손상시킵니다.

https://apple.stackexchange.com/a/223163/143849 에 이러한 모든 해결 방법이 있습니다 . 그러나 표준 Python 설치 프로그램, Homebrew 또는 Anaconda를 통해 자체 버전의 Python을 설치하는 것이 가장 좋습니다.


4

다른 패키지와 충돌이 있다고 생각합니다. 나를 위해 그것은이었다 six. 따라서 다음과 같은 명령을 사용해야합니다.

pip install google-api-python-client --upgrade --ignore-installed six

또는

pip install --ignore-installed six


3
@MikkoOhtamaa가 제공 한 답변 중 pip 와 함께 sudo 를 사용하는 것이 좋습니다 .
Piotr Dobrogost

@PiotrDobrogost, 묻기 전에 제대로 읽어 보지 않겠습니까? 내 대답은 six입니다.
Ruhul Amin

3
다시, @MikkoOhtamaa가 제공 한 답변 중 pip 와 함께 sudo 를 사용하는 것이 좋습니다 .
Piotr Dobrogost

1

나는 Mikko에 전적으로 동의하지만, 여전히 원한다면 다음과 같습니다.

  • 복구 모드에서 재시작 (Hold cmd + R)
  • 유틸리티에서 터미널 열기
  • 명령을 사용하십시오 csrutil disable

6
이는 시스템 무결성 보호를 비활성화 할 때의 영향을 설명하지 않으면 위험한 조언이 될 수 있습니다. 한 가지 고려 사항은 Windows UAC 및 가상화와 같이 비교적 빠르게 다시 활성화하지 않으면 다시 제대로 작동하지 않을 것이라는 기대입니다.
andy magoon

0

brew를 통해 python2.7을 설치했으며 다음은 내 문제를 해결했습니다.

brew install numpy

python3을 설치하지만 여전히 작동하며 2.7로 설정합니다.


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