ボールを蹴りたいシステムエンジニア

ボール蹴りが大好きなシステムエンジニア、ボールを蹴る時間確保の為に時間がある時には勉強する。

Windows環境でpythonの機械学習ライブラリscipyのインストールでハマった時の対処

Windows環境でpython機械学習ライブラリscipyをインストールしようとしてハマったのでメモ。

環境

Windows10 64bit
Python for Window 3.5.1

事象

事前にnumpyはインストール済みの状態で、pipでscipyをインストールしようとすると以下のエラー

$ pip install scipy
    Running from scipy source directory.
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\cygwin\tmp\pip-build-jdbdpxyp\scipy\setup.py", line 415, in <module>
        setup_package()
      File "C:\cygwin\tmp\pip-build-jdbdpxyp\scipy\setup.py", line 411, in setup_package
        setup(**metadata)
      File "c:\python3.5\lib\site-packages\numpy\distutils\core.py", line 135, in setup
        config = configuration()
      File "C:\cygwin\tmp\pip-build-jdbdpxyp\scipy\setup.py", line 335, in configuration
        config.add_subpackage('scipy')
      File "c:\python3.5\lib\site-packages\numpy\distutils\misc_util.py", line 1003, in add_subpackage
        caller_level = 2)
      File "c:\python3.5\lib\site-packages\numpy\distutils\misc_util.py", line 972, in get_subpackage
        caller_level = caller_level + 1)
      File "c:\python3.5\lib\site-packages\numpy\distutils\misc_util.py", line 909, in _get_configuration_from_setup_py
        config = setup_module.configuration(*args)
      File "scipy\setup.py", line 15, in configuration
        config.add_subpackage('linalg')
      File "c:\python3.5\lib\site-packages\numpy\distutils\misc_util.py", line 1003, in add_subpackage
        caller_level = 2)
      File "c:\python3.5\lib\site-packages\numpy\distutils\misc_util.py", line 972, in get_subpackage
        caller_level = caller_level + 1)
      File "c:\python3.5\lib\site-packages\numpy\distutils\misc_util.py", line 909, in _get_configuration_from_setup_py
        config = setup_module.configuration(*args)
      File "scipy\linalg\setup.py", line 20, in configuration
        raise NotFoundError('no lapack/blas resources found')
    numpy.distutils.system_info.NotFoundError: no lapack/blas resources found
    
    ----------------------------------------
Command "c:\python3.5\python.exe -u -c "import setuptools, tokenize;__file__='C:\\cygwin\\tmp\\pip-build-jdbdpxyp\\scipy\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record C:\cygwin\tmp\pip-2epuj3ap-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\cygwin\tmp\pip-build-jdbdpxyp\scipy\

対処

インストール済みのnumpyをアンインストール

pip uninstall numpy

http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy
にアクセスし

numpy-1.11.2+mkl-cp35-cp35m-win_amd64.whl
scipy-0.18.1-cp35-cp35m-win_amd64.whl
をダウンロードする
※numpyはmkl(Intel Math Kernel Library)が付属した.whlファイルを選択する必要有り

ダウンロード後インストール

$ pip install numpy-1.11.2+mkl-cp35-cp35m-win_amd64.whl
$ pip install scipy-0.18.1-cp35-cp35m-win_amd64.whl 

エラー出ずにインストールできた!

Processing c:\users\shinzato\desktop\scipy-0.18.1-cp35-cp35m-win_amd64.whl
Installing collected packages: scipy
Successfully installed scipy-0.18.1

ハマった原因

恐らくですが、

  • numpyのインストールをwhlファイルからじゃなくて通常のpipインストールしていたから?
  • scipyの利用には数値演算ライブラリが必要で、Linuxだと別途lapack/blasをインストールしているけど、windowsではそれらに対応していないとか?
  • mklをインストールして数値演算ライブラリとして利用する必要があるとか?

推測だけど恐らくその辺。

anacondaを使えばその辺の環境構築も楽に行えるとの事なので後日やってみる。