3.02.2014

Mac: How to Upgrade to SciPy 0.13

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」といった準備が必要かもしれない)

 

 

 

References

0 件のコメント:

コメントを投稿