Chainerは、1.5.0からCython、h5pyへ依存するようになりました(経緯、および詳細は以下をご参照ください)。
pfnet/chainer v1.5.0
Chainer 1.5のインストールがうまくいかない人への非公式なTips
このため、今までpip install chainer
でさくっと入っていたものがちょっと手間になりました。特にWindows環境ではダメージが大きいので、Windowsへのインストールについて解説します。
なお、インストール時のPythonのバージョンは3.5です(ChainerはすでにPython3.5に対応しています!)。
Visual Studioのインストール
Cythonは、C/C++の型などPythonにいくつかの記法を加えたものから、実際のC/C++コードを生成し、利用するための仕組みです。これによりPythonの簡易な記法とC/C++の実行速度の両方を手にすることができます。
ただ、C/C++のコードを実行する都合上これらのコンパイルが必要になるため、インストールに当たって導入しておく必要があります(具体的にはChainerの中のCythonで書かれた部分から生成されるC/C++コードをコンパイルするために必要)。
WindowsにおけるC/C++コンパイラはVisual Studioに付属するため、これをインストールします。Python3.5の場合、Visual Studio 2015になります(CommunityでOK。ただし、インストール時にVC++にチェックを入れる必要あり)。
なお、コンパイラにはバージョンがあり、これとVisual Studioのバージョンは基本的には合わせる必要があります。
Using Microsoft Visual C with Python
基本的には、PythonのMSC_VERから6を引いたものがVisual C++のバージョンになります。Python 3.5の場合、以下のようにMSCのバージョンは19になるので、Visual C++のバージョンは13・・・がないので14、つまりVisual Studioは2015になります(恐らく、以後一つずれるので今後は6でなく5を引くことになると思われます)。
>>> import sys
>>> sys.version
'3.5.0 |Continuum Analytics, Inc.| (default, Nov 7 2015, 13:25:22) [MSC v.1900
32 bit (Intel)]'
Microsoft Visual C++/製品バージョンと内部バージョン
とはいえ、せっかくインストールするのに古いVisual Studioを入れるのも嫌だと思うので(Python2系はずっと前ですし・・・)、レジストリの編集によって最新版の設定を利用することが可能です。
コンパイルに使われるvcvarsall
はdistutils.msvc9compiler.find_vcvarsall
の中で取得されるので、ここで参照される以下のレジストリの値を書き換えてしまいます。
- 64bit: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VisualStudio(VC++のバージョン)\Setup\VC
- 32bit: HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio(VC++のバージョン)\Setup\VC
この中にある、ProductDir
の値を見ています(例: (例: C:\Program Files\Microsoft Visual Studio 14.0\VC))。
上記のキー、値がない場合は新しいキー/値を追加し、実際インストールしたVisual StudioのVC++フォルダを設定しておきます。
※なお、上記の参照されるレジストリの値はPython3.5から変わります。distutils._msvccompiler.py
に記載がありますが、HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\SxS\VC7
の中の、キー名: Visual C++バージョン番号(例: 14.0)、値: Visual C++のフォルダになります。
Numpy, h5pyのインストール
お疲れ様でした。あとはもう簡単です。
依存するNumpy, h5pyを以下から落としてきて仮想環境(virtualenv)にインストールします。conda
を使っている場合、conda経由でも構いません。
Unofficial Windows Binaries for Python Extension Packages
Chainerのインストール
メインの依存ライブラリは導入済みなので、後は以下でインストールできるはずです。
pip install chainer
※64bitの場合これで入らない?ようなので、その場合はgit clone
でソースを落としてきてからそのフォルダに移動し、python setup.py build
からpython setup.py install
をやってみてください。
お疲れ様でした!