質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

Q&A

解決済

1回答

2919閲覧

OSXデフォルトではなくpipでインストールしたnumpyをimportする方法

d415uk35470

総合スコア45

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

0グッド

0クリップ

投稿2016/08/21 19:24

###前提・実現したいこと

OS標準のNumPyよりpipで入れたNumPyのほうがバージョンが新しいようなので、そちらを使うようにしたいです。

###発生している問題・エラーメッセージ

のですが

$ python

import numpy
print numpu.version

を見ると、古い方(OS標準のほう)を使っているようです。

###試したこと

python - How can I upgrade numpy? - Stack Overflow http://stackoverflow.com/questions/28517937/how-can-i-upgrade-numpy

を見ると、もとから入っているほうを消してしまえという回答がついていますが

El Capitanからはrootless機能で削除できません。

また、

Operation not permitted|Mac OS X 10.11 EI Capitan http://www.starlod.net/mac-os-x-10-11-ei-capitan-operation-not-permitted.html

などをみるとrootless機能を解除してやれそうですが

乱暴な方法に思えてしまいます。
もっとスマートな方法はないのか?と探しているところです。

rootless機能を解除して、システムに入っているnumpyを削除(ないしリネーム)する。しかないのでしょうか?

また、numpyのパスを調べようとすると

$ python >>> numpy.__path__ ['numpy']

と出てしまうのですが、

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/

にあるやつでいいんでしょうか。

numpy
numpy-1.8.0rc1-py2.7.egg-info

と2つあるのもなんかおかしい気がしますがpythonに詳しくないのでわかりかねております。

###補足情報(言語/FW/ツール等のバージョンなど)

OSX 10.11.5
Python 2.7.12
numpy(pip) 1.11.1
numpy(system) 1.8.0rc1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/08/21 19:35 編集

pythonをどのようにインストールしましたか? おそらくpythonが2種類混在してると思うので,環境構築のどこかで失敗してしまっていると思います。 無理に直そうとすると結構厄介になる可能性があるので,pyenvなどのバージョン管理ツールを使うことをお勧めいたします。 which python which pip の出力結果を教えていただければ問題がわかるかもしれません。
d415uk35470

2016/08/21 19:34

ありがとうございます!pythonはbrewで入れたように思います。whichで見ると/usr/local/bin/pythonを指しています。
d415uk35470

2016/08/21 21:49

すみません、スクロールで切れていて見落としていました。 /usr/local/bin/python /usr/local/bin/pip でした。
guest

回答1

0

ベストアンサー

古いパッケージはpathの読み込み順によるものみたいです。
なので,古いものは削除しちゃって問題ないです。削除した場合次にnumpyを見つけたパスでnumpyaをロードするようになります。
本来はpip uninstallコマンドで削除できるはずですが,pipがsystemじゃないpythonに置き換えられてしまっているとそちらを探して,pip uninstallしなければいけなくなると思います。また,systemのpipのpip uninstallが上手く動かなかった時はrmで削除しましょう。また,古いpathを読み込ませなくする方法もあります。(ただし,こちらは読み込まれた後のpathを消すだけなので毎回スクリプトごとに書かなければいけなくなるためお勧めしません。原因がそのパスにあるかどうかを調べるために使うのは有効だと思います。remove後正常にnumpyがimportされると,原因がpathのロード順であることがわかります。)

python

1sys.path.remove('(古いpythonのパス)/site-packages')

最後にsyspathはどのように足されるかという話になりますが,こちらは,PYTHON_PATH,PYTHON_HOMEに設定されているpathを見た後,.pthという拡張子ファイルで追加されるので,numpyなどのパッケージで設定されるのはsite-packagesのどこかのpthファイルだと思われるので,これを消せば,sys.pathに追加されなくなると思います。
ただしこの場合使われないゴミが残ってしまうので,numpyモジュールを消すか,パッケージ管理ツールに移行するのが賢明です。

投稿2016/08/21 21:43

編集2016/08/21 21:47
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

d415uk35470

2016/08/21 22:00

ありがとうございます。imprtの仕組みが多少は理解できました。削除してしまっても問題ないのですね。pipはeasy_installで入れた気がしますが、昔なのであまり覚えていません。ちょっと曖昧なのですが、terminalを再起動したら、突然治りました(numpy.__version__が最新を表示するようになりました。)。環境変数を読み込み直した、ということになるのでしょうか。とはいえ、こちらの質問投稿前にpipとbrewのnumpyをいったん削除してpipだけ入れなおしたり、としてはいましたが、自分で環境変数をさわったりはしていません、、、 曖昧な終わり方で申し訳ありませんが ``` $ which python /usr/local/bin/python $ which pip /usr/local/bin/pip $ python Python 2.7.12 (default, Aug 17 2016, 12:46:45) [GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import numpy >>> numpy.__version__ '1.11.1' >>> numpy.__path__ ['/usr/local/lib/python2.7/site-packages/numpy'] >>> ``` という状態になり、求めていた状態になっています。ありがとうございました。
退会済みユーザー

退会済みユーザー

2016/08/21 22:11

なるほど。直ってよかったですね。 python >>> numpy.__path__ ['numpy'] の表示からおそらく,numpy installしたフォルダ内でpython実行してしまったのかと思います。 pythonはインストール間違えると,環境変数が汚染されたり,シンボリックリンクが変なところを指したり,sys.pathが必要以上に増えたりで,かなりめんどくさいことが起こりやすいので学習用とかであれば仮想環境やバージョン管理ツール使うのがいいと思います。 使い続けてまた問題が生じたら導入を検討してみてください。
d415uk35470

2016/08/22 05:04

> numpy installしたフォルダ内でpython実行してしまったのかと思います。 あ、それに関してはまさしくそれです。ありがとうございます。検討してみます。
退会済みユーザー

退会済みユーザー

2016/08/22 06:47

その場合sys.pathの優先度でカレントディレクトリ(実行パス)が最優先になってしまうため,バージョンが古いものが読まれてしまったということですね。 普通brewのpythonは競合しないようになっているはずなので,このまま使い続けるのもいいかと思います。
d415uk35470

2016/08/23 23:01 編集

なるほど、そういうことですね。ありがとうございます。とりあえずこれで進めてみます。 あ、それに、記憶によるとそのディレクトリに移動して処理しはじめたのは途中からなので、それ以前はやはり別の理由で上手く行っていなかったと記憶しています。それも含めて今は解決して動いております。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問