web-dev-qa-db-ja.com

ピップが私のnumpyとscipyを更新しないのはなぜですか?

私の問題は、エラーがないにもかかわらず、pipがmy Python Packagesを更新しないことです。

これは this one に似ていますが、どうすればよいかはまだわかります。基本的に、pythonのすべての私のパッケージは、pipですべてを更新した後でも、途方もなく古くなっているようです。詳細は次のとおりです。

  • 私はpipバージョン1.5.6を使用しています。
  • Pythonバージョン2.7.5を使用しています
  • Mac OSXバージョン10.9.5を使用しています。

それを使用して、私は持っています:

  • 私のnumpyバージョンは1.6.2です。
  • 私のscipyバージョンは0.11.0です。
  • 私のmatplotlibバージョンは1.1.1です。

私が試した後でも:

Sudo pip uninstall numpy

に続く:

Sudo pip install numpy

どちらも正常に完了しますが、pythonに移動してnumpyのバージョンを確認すると、まだ古いバージョンです(他のすべてのパッケージと同様)。

ここで何が起こっているのかわかりませんか?...これをどのように修正できますか?追伸私はこれが初めてなので、明示的な指示が必要になる場合があります。ありがとう。また、誰かが望んでいる場合は、numpyをインストールしているpipのスクリーンショットを提供できます。

編集:

コメントに従って実行したコマンド:

$which -a pip
/usr/local/bin/pip
$ head -1 $(which pip)
#!/usr/bin/python
$ which -a python
/usr/bin/python
12
Spacey

OS X 10.9では、AppleのPythonには、/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/pythonという名前のディレクトリに、プリインストールされた追加のパッケージが多数付属しています。numpyを含みます。

そして、それらがインストールされる方法(easy_installsetuptoolsの古い0.7より前のバージョンで使用するが、通常のeasy_install宛先のいずれにもないかのように)、pipはそれらについて何も知りません。

つまり、Sudo pip install numpyは、numpyの個別のコピーを'/Library/Python/2.7/site-packages'にインストールします。ただし、sys.pathでは、Extrasディレクトリがsite-packagesディレクトリの前にあるため、import numpyは、Appleのコピーを見つけます。それがなぜなのかはわかりませんが、それはおそらくあなたが猿になりたいものではありません。


それで、これをどのように修正しますか?

2つの最適なソリューションは次のとおりです。

  • virtualenv を使用し、システム全体ではなく、numpyおよび友人を仮想環境にインストールします。これには、virtualenvの使用方法を学習する必要があるという欠点があります。ただし、ある時点でそれを実行することは間違いなく価値があります。今すぐ学ぶ時間がある場合は、それを試してください。

  • Python 3.xにアップグレードします。python.orgインストーラから、またはHomebrewを使用してください。Python 3.4以降には、pipが付属し、付属していませんpip- unfriendlyのプリインストールされたパッケージです。また、別個の2.7をインストールする場合とは異なり、AppleのPython=にはまったく影響しません。python3pythonpip3pipなどはすべて、別々のプログラムであり、PATHのしくみなどについて学ぶ必要はありません。これには、Python 3.xを学習する必要があるという欠点があります いくつかの大きな変更 ですので、少し覚える必要がありますが、ある時点で間違いなく行う価値があります。


これらのどちらも可能ではないと仮定すると、Appleの「エクストラ」の新しいバージョンをインストールするパッケージには、pipではなくeasy_installを使用するのが最も簡単なオプションだと思います。 /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/pythonの内容を確認すると、それらの完全なリストを取得できます。 numpyをアップグレードするときは、おそらくscipymatplotlibもアップグレードする必要があります。他のすべては無関係です。 (もちろん、PyObjCdateutil、その他気になるものはアップグレードできますが、そうする必要はありません。)

これは理想的なソリューションではありません。 easy_installpipよりも劣っている理由はたくさんあります(たとえば、アンインストーラがないため、/Library/blah/blahパスがどこにあるかを覚えておかなければなりません(または、Python内からsys.pathを出力することでもう一度見つけます)。通常、readlinepip自体を除くすべてのeasy_installを提案します(そして、AppleのPythonのみを使用します)。

14
abarnert

古い質問ですが、この問題を解決しようとすると、私の解決策を投稿します。

私は@abarnertの診断が正しいとわかりましたが、どの解決策も好きではありません。numpyのデフォルトバージョンを本当にアップグレードしたいのです。問題は、これらの人たちがいるディレクトリ(@abarnertが言及した)は、この「ホイール」グループに属しているため、Sudoによってさえ触れることができないということです。実際、そこに行ってSudo rm -rf blahを実行すると、アクセス許可拒否エラーが発生します。

これを回避するには、抜本的なアクションを実行する必要があります。

  1. コンピュータをリカバリモードで再起動します
  2. 端末を見つけてcsrutil disableと入力します
  3. 通常の方法で再起動してから、numpyをpip2 install --user --upgrade numpyでアップグレードします(この問題のある他のパッケージでも同じです)。
  4. 手順aとbを繰り返します。今回は「無効」を「有効」に変更します

注:「csrutil disable」は、マシンを不安定にする可能性がある深刻なビジネスです。絶対に必要な場合にのみ使用し、できるだけ早く再度有効にします。しかし、私の知る限り、これはwheelディレクトリ内のPythonパッケージをアップグレードする唯一の方法です。

4
cag51

Appleによってインストールされたnumpyおよびscipyバージョンの名前を変更して、Pipによってインストールされた新しいバージョンの使用を開始します。

2
Eddie