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 2017年

2
sudoと一緒に使用しないでください--user。に--userインストールするの~/Libraryではなく、にインストール/Libraryする必要はありませんsudo。ただしsudo、でインストールすると、ディレクトリとファイルはすべてによって所有されrootます。次にsudo、それらを使用して何かを行う必要があります。これはsudoあなたがそれを使ってはいけない他のことに使うことをあなたに要求するでしょう。そうすれば、正直な間違いでも、エラーのスローからデータの破壊に至る可能性があります。
Bruno Bronosky

回答:


205

指示する指示sudo pip installは本質的に間違っています。

やるべきだというチュートリアルがある場合はsudo pip、このパッケージに対してバグを報告してください。時間はsudo pip壊れた習慣であることが証明されているので、著者はPythonコミュニティを教育していません。

OSX El Capitanは、オペレーティングシステムファイルの損傷を防ぐメカニズムを導入しました/System/Library/Frameworks/Python.framework/Versions/2.7/share保護された場所の1つです。通常のユーザーはそこにファイルを置いたり書き込んだりする理由はありません。これは、オペレーティングシステム自体がこれらのファイルに依存しており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 pip」が悪いことについてのこの見方についての引用はありますか(「sudo pipが壊れたプラクティスであることが時間とともに証明されたため」)。あなたが挙げた引用にはsudoの議論は見当たらず、チュートリアルはvirtualenvを '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 2016

3
あなたは私を教えてくれたし、私の時間も節約できた。おかげで私はsudoの使用をやめ、すべてがうまくいきました!すばらしい答えです。
Parth Gupta

24

同じ問題がありましたが、使用easy_install "module"することで問題は解決しました。

理由はわかりませんが、pipとeasy_installは異なるインストール場所を使用しており、easy_installは正しい場所を選択しました。

編集:再チェックなしで、コメントのため; 異なる(OSXとbrewでインストールされた)インストールは互いに干渉しているようです。そのため、実際に言及されているツールは異なる場所を指しています(異なるインストールに属しているため)。通常、これらのツールは、1つのインストールポイントから同じフォルダーを指します。


2つの異なるPythonインタープリターがインストールされていて、別のインタープリターeasy_install用に構成されていますか?
Mikko Ohtamaa 2015年

私は2-3異なるPythonのバージョンがインストールされていませんが、私は持っているeasy_installそれらのすべてのために:easy_install-2.6easy_install-2.7easy_install-3.5
smat88dd

ほとんどの場合、異なるPython pipeasy_install指します。whichUNIXコマンドでこれを理解してpipから、使用する適切なコマンドを理解できます。
Mikko Ohtamaa 2015年

1
アップグレードする前に、古いOSXから前にインストールした可能性がありますか?
Mikko Ohtamaa 2015年

1
pipとeasy_installは異なるインストール場所を使用します –いいえ、まったく同じ場所を使用します。@MikkoOhtamaaがコメントであなたを見せようとしていたので、それ偶然に働いた。これは明らかに無回答です。
Piotr Dobrogost 2017

19

Pythonを再インストールする必要があります。

brew reinstall python

brewを取得するには、brewのホームページを参照してください。


2番目。私は走ってbrew install python、私pipはすでに適所にあると思います。その後pip、インストールが働いていた(私は、インストール上/権限とピップバケツワット同様の問題だった)
travelingbones


11

pip3 install <package>代わりに使用され、による権限の問題を解決しましたpip


10
参考までに、pip3通常ユーザーによってインストールされるPython 3を使用しているため、これは機能しました。一方、Python 2(2.7)はmacOSに同梱されており、最高評価の回答で説明されているように保護されています。
Khanh Nguyen 2017

10

TL; DR $ PATH修正

  1. pip install --user package_nameCLI実行可能ファイルを含める必要があるパッケージをインストールするために使用します。
  2. Pythonシェルを起動し、 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行き、インストールされた実行可能ファイルにアクセスできるようにするためにあなたの何をすべきかを理解しました。幸いなことに、無関係な質問に対する同様のニーズはすでに解決しました。

これは、私のシステムの1つで問題を解決した方法のトランスクリプトです。$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'

ここで私はこの問題を解決するために使わ--usersudo

$ 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あなたがそれを使ってはいけない他のことに使うことをあなたに要求するでしょう。そうすれば、正直な間違いでも、エラーのスローからデータの破壊に至る可能性があります。
Bruno Bronosky 2017年

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/。ピップはしばしばこれらをアップグレードしたいが、エルキャピタンではできません。
  3. OS X /System/Library//Library/Python/2.7/site-packages(システム全体のpythonパッケージの場所)よりもpython検索順序で上位に配置されるため、一部のパッケージの新しいバージョンをインストールしても、古いパッケージがロードされ、一部の依存関係が壊れます。

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 2017

@PiotrDobrogost、質問する前に、正しく読んでみませんか。私の答えはに関するものsixです。
Ruhul Amin 2017

3
繰り返しになりますが、@ MikkoOhtamaaの回答のどの部分で、pipでsudoを使用することを提案しているのか理解できませんか?
Piotr Dobrogost 2017

1

私はミッコに完全に同意しますが、それでもやりたい場合は、ここに方法があります:

  • リカバリモードで再起動します(cmd + Rを押したままにします)
  • ユーティリティからターミナルを開く
  • コマンドを使用する csrutil disable

6
これは、システム整合性保護を無効にすることの影響を説明せずに危険なアドバイスになる可能性があります。1つの考慮事項は、Windows UACと仮想化のように、比較的迅速に再度有効にしないと、これが再び正しく機能しないという期待です。
アンディマゴン

0

私はpython2.7をbrew経由でインストールしており、次の方法で問題が解決しました

brew install numpy

それはpython3をインストールしますが、それでも動作し、2.7にも設定します。


完璧に働いた。ありがとう!!
NightFury
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.