Chainer 1.7.1 を El Capitan にインストールするときにいくつか問題が生じたので、解決方法をメモしておく。

問題が生起した順のログなので、ストレートホーワードな手順にはなっていない。

 

pyenv で Python 2.7.11 をインストールして、システムの Python ではない Python に chainer をインストールしようとしている。

 

pyenv 等に関しては以前のエントリーの通り。

 -> 機械学習フレームワーク Chainer を OS X にインストールするメモ

 -> OS X 10.11 への pyenv による Python のインストールメモ

 

その後、

 

$sudo -H pip install chainer

 

でインストールできたように見えるのだが。

 

 

☆ matplotlib の問題

 

まず、実行したときに、chainer と直接関係ないが、matplotlib で問題が生じた。

 

>>> import matplotlib

 

としたときに、

 

....

ImportError: dlopen(/Users/me/.pyenv/versions/2.7.11/lib/python2.7/site-packages/numpy/core/multiarray.so, 2): Symbol not found: _PyUnicodeUCS2_AsASCIIString
  Referenced from: /Users/me/.pyenv/versions/2.7.11/lib/python2.7/site-packages/numpy/core/multiarray.so
  Expected in: flat namespace
 in /Users/me/.pyenv/versions/2.7.11/lib/python2.7/site-packages/numpy/core/multiarray.so

 

というエラーが出た。

そこで、numpy の update をしようと

 

$sudo easy_install --upgrade numpy

 

を実行したが、実行できる fortran がないというコンパイルエラーが出たので、

 

$brew install gcc

 

で gcc をインストール。これにより gfortran が使用できるようになる。

再度 numpy の upgrade を実行すると今度は問題なく終了し、

 

>>> import matplotlib

 

も実行できたが、次に

 

>>> import matplotlib.pyplot 

 

で同様に

 

...

ImportError: dlopen(/Users/me/.pyenv/versions/2.7.11/lib/python2.7/site-packages/matplotlib/_path.so, 2): Symbol not found: _PyUnicodeUCS2_AsASCIIString
  Referenced from: /Users/me/.pyenv/versions/2.7.11/lib/python2.7/site-packages/matplotlib/_path.so
  Expected in: flat namespace
 in /Users/me/.pyenv/versions/2.7.11/lib/python2.7/site-packages/matplotlib/_path.so

 

というエラーが出た。

今度は matplotlib の upgrade を試みた

 

$sudo easy_install --upgrade matplotlib    

 

が、pkg-config と freetype に関連するエラーが出た。

 

...

pkg-config is not installed.

The C/C++ header for freetype2 (ft2build.h) could not be found

...

 

そこで、それらをインストール。

 

$brew install pkgconfig
$brew install freetype

 

これにより

 

$sudo easy_install --upgrade matplotlib  

 

は無事完了し、

 

>>> import matplotlib.pyplot

 

は実行できた。ここまで、matplotlib 関連のエラー対処。

 

 

☆ hdf5 serializers の問題

 

Chainer を実行して、次のエラーは、Chainer から hdf5 serializers を使ったときの Runtime エラー。

 

RuntimeError: h5py is not installed on your environment.

Please install h5py to activate hdf5 serializers.


とのこと。

 

$sudo -H pip install h5py

 

でインストール。そして、一旦 Chainer を uninstall して再インストールすることを試みた。


$sudo -H pip uninstall chainer
$sudo -H pip install chainer

 

すると、

 

...

    ImportError: dlopen(/Users/me/.pyenv/versions/2.7.11/lib/python2.7/site-packages/Cython/Compiler/Scanning.so, 2): Symbol not found: _PyUnicodeUCS2_Compare

      Referenced from: /Users/me/.pyenv/versions/2.7.11/lib/python2.7/site-packages/Cython/Compiler/Scanning.so

      Expected in: flat namespace

     in /Users/asai/.pyenv/versions/2.7.11/lib/python2.7/site-packages/Cython/Compiler/Scanning.so

 

というさっきまで出ていたようなエラーがまた出た。

そこで Cython の upgrade。

 

$sudo easy_install --upgrade cython

 

を実行後

 

$sudo -H pip install chainer 

 

をすると Chainer を再インストールできた。

しかし、再度 Chainer から hdf5 serializers を使うと同じエラーがまた出た。

確認してみると

 

>>> import h5py

...

ImportError: dlopen(/Users/me/.pyenv/versions/2.7.11/lib/python2.7/site-packages/h5py/_errors.so, 2): Symbol not found: _PyUnicodeUCS2_DecodeUTF8

  Referenced from: /Users/me/.pyenv/versions/2.7.11/lib/python2.7/site-packages/h5py/_errors.so

  Expected in: flat namespace

 in /Users/me/.pyenv/versions/2.7.11/lib/python2.7/site-packages/h5py/_errors.so

 

と同じようなエラーが出たので、h5py の upgrade。

 

$sudo easy_install --upgrade h5py

 

で upgrade を試みるも、

 

...

'hdf5.h' file not found

 

というエラーが発生。

 

$brew install homebrew/science/hdf5

 

で hdf5 をインストール。そして、再度

 

$sudo easy_install --upgrade h5py

 

を実行したところ問題なく完了した。

 

これで漸く、Chainer から hdf5 serializers を使えるようになり、学習した NN を Save することができるようになった。

 

 


やじるし Chainer 関連メモの目次