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/

上記も助けにはなりませんでした。Pythonライブラリを再びスムーズにインストールできるようにするにはどうすればよいですか?


1
システムのpipはどこにありますか?
user151019

$ where pip / usr / local / bin / pip
web_ninja


pipのインストール方法-/ Systemではなく
/Library/Python/2.7/site-packagesに

今は覚えていません。問題であるコメントを投稿した後、私はbrewを使用してpythonをインストールし、pipの場所を修正しました。
web_ninja

回答:


84

簡単な解決策は、homebrewを使用してインストールpythonし、ユーザーが変更可能なpythonフレームワークに対して実行できる/usr/local/binようにするpipことです。

brew install python
pip --version

システム整合性保護を無効にすることもオプションですが、侵入検知を管理する人材がある場合、または開発者/システム管理者であり/なしでテストする必要がある場合、専門的に管理されファイアウォールで保護されたサーバー以外にはお勧めしませんSIP。

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

制限付きフラグが設定されていることがわかります。これは、SIPが使用されている間はルートとしても削除できません。

homebrewを使用すると、システムが提供するバージョンとは別に、pipとpythonを管理できます。ボーナスとして、homebrewフレームワークは、自動化によりメンテナンスとパッチ/作業を容易にするように設計されています。


1
pythonをインストールしたbrewは安定せず、ランダムにクラッシュします
-jayatubi

@jayatubiどのパッケージまたはスクリプトがあなたにとって不安定ですか?brewからpython 2.7.10をインストールするのですか、それともpython3。必要に応じて安定したバージョンを好む場合は、数十のバージョンから選択できます。
bmike

1
それは同意brew install pythonあなたには、いくつかの時間のためのシステムのPythonを使用してきた場合は他のいくつかの設定をクリーンアップしても(例えばroot所有のPythonファイルの下で必要になることがあり、最も簡単なオプションである/usr/local/bin~/Library/Caches/pip
RichVel

コンパイルされたpython .pkgをpython.org/downloads/release/python-2712などからダウンロードすると、10.8で問題なく動作します。それと自作についてのコメントはありますか?ありがとう
デニス

好きなbrewバージョンを簡単にピン留めできるので、@ denisが好きです。複数の異なるバージョンを管理したり、定期的に更新したりしてください。ただし、自分に合ったものがある場合は、何か変更する必要があると主張するのは困難です。
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)は、スライドに使用されるpipのいくつかの悪い習慣をブロックします。

El CapitanのSIPは、OS XでAppleが提供するバージョンのPythonでpipを使用する際の3つの問題を明らかにします。

  1. distutilsはMac上で2つの重要な変数を正しく設定しないため、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/

これらの問題を回避できますが、方法は3つの質問に対する答えに依存します。

  1. Mac OS XバージョンのPythonを引き続き使用しますか、それとも独自のPythonをインストールしますか?独自のインストールが最も安全なオプションであり、公式のPythonインストーラーであるHomebrewまたはAnacondaを使用して実行できます。@Sacriliciousが指摘したように、これはAppleが推奨するものでもあります。独自のバージョンのPythonをインストールする場合、おそらく現在インストールされているものと、それらのパッケージ(pipを含む)にインストールされたスクリプトをすべてアンインストールする必要があります。そうしないと、システムにインストールされたバージョンのPythonにアクセスするスクリプトや、独自のインストールにアクセスするスクリプトの迷惑な経験があります。/Library/Python/2.7/site-packages/usr/local/bin

システムにインストールされたPythonに固執したい場合は、さらに2つの決定を行う必要があります。

  1. すべてのユーザー用にパッケージをインストールしますか、それとも自分用にパッケージをインストールしますか?すべてのユーザーにインストールすると、Pythonを使用するすべてのプログラム(おそらく管理スクリプトを含む)が、インストールするすべてのパッケージにアクセスできるようになります。ただし、El CapitanのPythonの使用を妨げる可能性は遠いです。(Appleがpython -S期待どおりのパッケージを常に入手できるようにするために使用することを望んでいますが、これをテストする方法はありません。)自分のユーザーアカウントだけにインストールすると、システムのPythonインストールを妨げる可能性がなくなります。注:システム全体のインストールからユーザーのみのインストールに切り替える場合は、おそらくこの機会に、現在インストールされているすべての/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/...ディレクトリを使用すると、Core Graphicsおよびbonjourなど、pipを介して利用できない一部のAppleパッケージにアクセスできなくなります。(これらが必要な場合は、サイトパッケージディレクトリにシンボリックリンクすることでアクセスできる場合があります。)

さて、ここに回避策があります。これらは、オペレーティングシステムで使用されるPythonパッケージを誤って置き換えたり削除したりしないように、OS Xのすべてのバージョンで有効な方法です。ただし、OS X El Capitan(10.11)でAppleが提供するバージョンのPythonでユーザーがインストールしたパッケージを使用する場合、これらは不可欠です。

pipをインストールする

おそらく既にこれを行っていますが、そうでない場合は、次のコマンドを使用して、すべてのユーザーに 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

共有ファイルの場所を管理する

すべてのユーザー用にパッケージをインストールする場合は、次の行で.pydistutils.cfgというファイルを作成します(https://github.com/pypa/pip/issues/426から):

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

通常を使用する場合は、sudo -H pip ...このファイルを/var/root(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パスを管理する

インストールするパッケージが、システムにインストールされたパッケージよりも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;である必要があります。また、このファイルのすべてのテキストは1行である必要があります。)

で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をインストールすることができました。
ポールチェルノック

1
これは、実際に私がこれまでに遭遇した最も有益で完全かつ有用な答えの1つです。よくやった、ありがとう。
cmsjr

@cmsjr、ありがとう!何が起こっているのかを理解するのにしばらく時間がかかり、これはそれを参照するのに良い場所を与えてくれます!
マティアスフリップ

4
私がこれまでに見てきた最も明確で最も完全な説明、特に既存のシステムPython混乱のクリーンアップ-ありがとう!私の主な改善点は、非常に簡単で、sudoを必要としないクリーンなセットアップを提供するため、作成済みのPythonを使用することを強くお勧めします。これは、開発プロジェクトのvirtualenvsに追加されます。
RichVel

最悪だ。神のお恵みがありますように。
マットM.

31

まず、問題に対処する方法としてSIPを無効にしません。申し訳ありませんが、このフォルダーの作成が失敗するのはそのためですが、回避する必要があります。第二に、独自のPythonをインストールするときに、pyObjCを介した橋のように、Appleがあなたに与えていると思っていたすべての便利さを失います。
(私は認めます、彼らはあなたが/usr/local開発者ならあなた自身のものをインストールすべきだと言っています、私はただbrewでそれを簡単な方法行うことに反対します。)

論理的には、SIPがユーザーをブロックしていない場所にインストールすることを考えます。これは、ほぼ確実に、いくつかの依存関係pipによって解決されます。あなたはそれがインストールを実行したいピップを伝えることは、それは例えば、それが必要な多くの一般的なインストールのための依存関係を確認する場所である/システムに既存のものを無視したと同じくらいの救済策ではないsix、とSIPは、ピップの原因となりますそれを試してアップグレードするときに自分自身を破る。/Library/Python/2.7/site-packagesにインストールするのは、実際にはpipのデフォルトの動作です--ignore-installed。依存関係の更新されたバージョンを強制的にインストールするように言うだけです。
...残念ながら、このモジュールをインタラクティブなセッションまたはスクリプトでインポートすると、すばらしい脂肪の障害が発生する可能性があります-まだ/ Systemのアップグレードされていないパッケージを見ています!

setuptoolsの初期の頃から、Pythonにはそのルックアップを明示的にする方法があります。それは、少し奇妙だ(とチェックせずに、リストの一番上にそれを無理に勧めの鈍ワクワクセキュリティ意識しているといない人たちのものに一時停止を引き出す必要がありますが、)あなたは、で終わるファイルに置くことができます.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
これはエレガントであり、私の単純な「システムPythonを放棄して作成する」ソリューションに対する優れた対抗策です。迅速で汚れが必要な場合、これは努力する価値がないかもしれませんが、pyObjCと1つのpythonを保持することには大きなメリットがあります。
bmike

2
もっとPythonicで賢明なのは--user、virtualenv としてインストールするか、virtualenvを使用することです。私はシステム管理者として、システムに一度インストールするだけで、ユーザーがシステムをオーバーライドできるようにする必要があることを心に留めています。このソリューションへの異議は、システムが変更されたパスを見ているということかもしれませんが、easy_installが.pthファイルを書き込むこともできるという先例があります。
Sacrilicious

2
醸造方法が簡単/間違った方法であるかどうかはわかりません-それは問題を解決することの問題であり、醸造は私の問題を壮大に解決しています-新しいおもちゃで遊ぶのにどれだけの労力がかかるかを一人で考えます(ruby 2.2 .3、python3.5、MongoDB、Node4.2.1)、コマンドを入力するなどの便利な方法で、再コンパイル、更新、スラッシュを削除します-それで、私は簡単な道を進みます:)出荷されたPythonのOS Xバージョンは、CocoaおよびThreadsのサポートと、これまでに使用したことのない多くのパッケージを除けば非常に異なります。実際、Xcode / Kernelの山をコンパイルしました
PJJ

elcap.pthを/Library/Python/2.7/site-packagesに追加しましたが、sys.pathの0および2インデックスにそのパスがリストされています。そして、私が試したsudo pip install --ignore-installed ipythonポイントピップはこれで、かつ「setup.py pexpect用インストールの実行」になるまでそれが実行され、まだ /System/Library/Frameworks/Python.framework/Versions/2.7/shareで何かをアップグレードしようとすると、エラーが出て。
小次郎

virtualenvをインストールするには、pipを使用する必要があるため、pipの使用に関連する問題は実際には解決されません。pip --user現状では、私はそれをインストールしていますが、virtualenvはまだ動作していません。
user5359531

4

これは、SIPまたはSystem Integrity Protectionによるものだと思います。これは、Windowsのウイルス対策のように感じられるリアルタイムのファイル保護であり、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 from me ...
bmike

1
相棒、ありがとな!ユーモアを入れようとしましたが、すべての人が私の理解と一致している必要はありません;)
PJJ

うーん-sacriliciousの答えを読んだ後、これが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にインストールしましたが、一部のパッケージは更新されませんでした。

私の場合、.hファイルをSystem Frameworksフォルダーに書き込もうとする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

pythonのインストール後:

sudo easy_install pip

3
brew install pythonすでにpipがインストールされています。その後、easy_installを使用してpipをインストールすると、2つのpipがインストールされることになり、混乱を招く可能性があります。
NSSynapse

3

この問題の非常にクールなソリューションは、virtualenv(virtualenvwrapper)を使用することです。プロジェクトの新しい環境を作成した後、問題なくpipを使用できます。

mkproject <project_name>
pip install <package_name>

virtualenvのインストールをどのようにお勧めしますか?pip install virtualenvまたは、pipが機能していないsudo easy_installため、すでにここにあるものを+1 する必要があります。乾杯
bmike

1
pipは権限の問題により機能していないため、sudo easy_install動作します
-neosergio

2

オリジナルのpython2.7がOSXに付属している間に、python3をMacにインストールしています。したがって、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/からローカルのPythonバージョン(pipを含む)を再インストールして、システムとローカルにインストールされたpythonインスタンスが別々に保たれるようにすることでした。
@mfrippの回答で fix_mac_path.pth修正を使用しようとしましたが、クリーナーの削除と再インストールが見つかりました。

原因

(これらの手順を実行しないでください)

Ansibleをインストールしようとしたときに、この問題が発生しました。pip経由でOS XにインストールするためにAnsibleのドキュメントに従いました。
最初にpip をインストールしました。sudo easy_install pip
これはSystem easy_installを使用し、/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'))

ピップチェックにより、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.

ansibleはsetuptools(バージョンなし)のみを必要としたため、pipはSystem setuptoolsによって満たされた依存関係を報告したことに注意してください。

解決

私はを示唆したプロセスを使用して、任意のローカルのpythonライブラリをアンインストールすることによってそれを解決し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/

次に、Mac OS X用の2.7.13インストーラーパッケージをhttps://www.python.org/downloads/からダウンロードして インストールしました。

これは、ローカルのpythonとピップのインストール/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

ここでは、2つの潜在的な解決策は、追加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.