Mac: SciPy のアップグレード
目的
過去に scipy 0.11.0 をインストールした Mac で、scipy.spatial.Voronoi などの新しめのライブラリを利用したい。
今回、scipy 0.13.3 にアップグレードするまでの過程をメモとして残しておく。
環境
- OS: Mac OS X 10.9 (Mavericks)
- Homebrew インストール済み
- Python 2.7.5
- pip インストール済み
- scipy: 0.11.0 -> 0.13.3
$ pip show scipy --- Name: scipy Version: 0.11.0 Location: /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python Requires: $ python Python 2.7.5 (default, Aug 25 2013, 00:04:04) [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import scipy >>> scipy.__version__ '0.11.0' >>> from scipy.spatial import Voronoi Traceback (most recent call last): File "", line 1, in ImportError: cannot import name Voronoi >>>
手順
愚直に sudo pip install --upgrade scipy コマンドを叩くと、以下のエラーとなった。
error: library dfftpack has Fortran sources but no Fortran compiler found
Fortran のコンパイラが必要らしい。
1. gFortran のインストール
Homebrew で Fortran コンパイラ、gFortran をインストール。
$ brew install gfortran (略) $ gfortran -v ### 確認 Using built-in specs. COLLECT_GCC=gfortran COLLECT_LTO_WRAPPER=/usr/local/Cellar/gfortran/4.8.2/gfortran/libexec/gcc/x86_64-apple-darwin13.0.0/4.8.2/lto-wrapper Target: x86_64-apple-darwin13.0.0 Configured with: ../configure --prefix=/usr/local/Cellar/gfortran/4.8.2/gfortran --datarootdir=/usr/local/Cellar/gfortran/4.8.2/share --bindir=/usr/local/Cellar/gfortran/4.8.2/bin --enable-languages=fortran --with-system-zlib --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-cloog=/usr/local/opt/cloog --with-isl=/usr/local/opt/isl --disable-cloog-version-check --disable-isl-version-check --enable-checking=release --disable-stage1-checking --disable-libstdcxx --enable-lto --disable-nls --disable-multilib Thread model: posix gcc version 4.8.2 (GCC)
2. scipy のアップグレードインストール
これでビルドが行える状態になった。所要時間は10分程度。
$ sudo pip install --upgrade scipy (略) $ pip show scipy ### 確認 --- Name: scipy Version: 0.13.3 Location: /Library/Python/2.7/site-packages Requires:
ところが、いざ python を使ってみるとバージョンが元のままである。
$ python -c 'import scipy; print(scipy.__version__)' 0.11.0
3. 旧バージョンのライブラリの退避
どうやらライブラリパスの関係で、旧バージョンの scipy が検出されている様子。
旧バージョンの scipy インストール先をディレクトリごと退避したら、新しいバージョンが無事使えるようになった。
$ sudo mv -i /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/scipy /tmp/_OLD_scipy ### 適宜削除 $ python -c 'import scipy; print(scipy.__version__)' 0.13.3
補足. Python3 対応
Python3 側は numpy、scipy ともに未導入だったので新規インストールを実施。
$ python3 Python 3.3.2 (default, Jan 13 2014, 17:04:15) [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import scipy Traceback (most recent call last): File "", line 1, in ImportError: No module named 'scipy' >>> $ sudo pip3 install numpy $ sudo pip3 install scipy $ sudo ln -s /usr/X11/include/freetype2/freetype/ /usr/X11/include/freetype ### 注1参照 $ sudo pip3 install matplotlib $ python3 -c 'import scipy; print(scipy.__version__)' ### バージョン確認 0.13.3
これで Python3 でも scipy 0.13.3 が使えるようになった。
注1) freetype のシンボリックリンクを作らないと、以下のエラーとなってしまった。
/usr/X11/include/ft2build.h:56:10: fatal error: 'freetype/config/ftheader.h' file not found #include <freetype/config/ftheader.h> ^ 1 warning and 1 error generated. error: command 'clang' failed with exit status 1
(そもそも /usr/X11/include が存在しない場合には、「brew install freetype libpng」
「brew link --overwrite freetype」「xcode-select --install」といった準備が必要かもしれない)
0 件のコメント:
コメントを投稿