Windows で VirtualEnv の Python2.7 に pip と wheel を使って コンパイルエラーが発生するパッケージ(例 scipy)をWindows用バイナリ提供サイトから入手してインストールする

1.SciPy の pip インストールでエラー

実践 機械学習システム

で、事例をこなすのに、SciPy が必要なようなので、Windows の VirtualEnv から pip でインストール。

(math_env) c:\Programs\venv\math_env\Scripts>pip install scipy
    :
File "C:\Programs\venv\math_env\lib\site-packages\numpy\distutils\misc_util.py", line 872, in _get_configuration_f
rom_setup_py

config = setup_module.configuration(*args)

File "scipy\linalg\setup.py", line 19, in configuration

raise NotFoundError('no lapack/blas resources found')

numpy.distutils.system_info.NotFoundError: no lapack/blas resources found

で、エラー。

pipで素直にインストールできないと面倒くさいんだよな。特にWindows。

SciPy の Windows 用のインストーラーはあるのだが、できれば、VirtualEnv で対応したい。

ということで、エラー内容を調べると、stackoverflow で以下の回答を発見。

http://stackoverflow.com/questions/28190534/windows-scipy-install-no-lapack-blas-resources-found

The following link should solve all problems with Windows and SciPy; just choose the appropriate download. I was able to pip install the package with no problems. Every other solution I have tried gave me big headaches.

次のリンクが、Windows とSciPyのすべての問題を解決!?

Source: http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy Command: pip install [Local File Location][Your specific file such as scipy-0.16.0-cp27-none-win_amd64.whl]

 

2.Unofficial Windows Binaries for Python Extension Packages

http://www.lfd.uci.edu/~gohlke/pythonlibs

ページを開くと、様々な Windows用のPython Extension パッケージ(非公式) が公開されているようだ!

これは非常に便利そうじゃないか!

非公式と書いてはあるが、公式SciPyのインストールページにもURLが紹介されていた

uwbfpep

確認すると、バイナリファイルは、.whl という拡張子を持つ、wheel フォーマットというファイル形式で提供されているらしい。

3.Wheelフォーマット

wheelフォーマット?

http://qiita.com/toruuetani/items/b0000e9f5c89a350d4f8

なぜ今頃 pip を使いだすのか
pip はバイナリからインストールできないから。
pure python でないパッケージはソースからコンパイルしないといけないが、 linux と違って windows には C コンパイラがないことが多いため、 そういうパッケージをインストールできない。そのため windows 向けにバイナリパッケージが用意されている(XXX-1.2.1.win32-py2.7.exe など)。このバイナリパッケージは easy_install なら問題なくインストールできるが、 pip ではインストールできない。
そのため pip がいくら進化しようと、 windows では easy_install 一択だった。

上記のような状況は wheel の登場により改善されてきている。 wheel フォーマットはバイナリも含められるため、特殊なパッケージ( pywin32, psycopg2, py2exeなど )を除いては、ほぼ pip だけで行けるようになっている。

おうそういう理屈か!というぉとで、

pip で wheel をインストール

(math_env) c:\Programs\venv\math_env>pip install wheel
You are using pip version 6.0.8, however version 7.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting wheel
Downloading wheel-0.26.0-py2.py3-none-any.whl (63kB)
100% |################################| 65kB 1.3MB/s
Installing collected packages: wheel

Successfully installed wheel-0.26.0

4.SciPyのインストール

ということで、SciPyのインストールを試みる。

http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy

scipy

上記から、scipy-0.16.0-cp35-none-win_amd64.whl をダウンロードして、インストールしてみると、

(math_env) c:\Programs\venv\math_env>pip install c:\work\py\scipy-0.16.0-cp35-none-win_amd64.whl


scipy-0.16.0-cp35-none-win_amd64.whl is not a supported wheel on this platform.

http://stackoverflow.com/questions/28568070/filename-whl-is-not-supported-wheel-on-this-platform

cp33 means CPython 3.3 you need scipy‑0.15.1‑cp27‑none‑win_amd64.whl instead.

むむ、インストール失敗!?

って、調べるとファイル名の、cp35 の部分は、Pythonのバージョンのようだ。CPython3.5 ってことか。

リビジョンかなんかかと思って、値が大きいものをダウンロードしてしまっていたよ。

ということで、cp27 をダウンロードして pip install で難なく成功。

(math_env) c:\Programs\venv\math_env>pip install "c:\work\py\scipy-0.16.0-cp27-none-win_amd64.whl"
You are using pip version 6.0.8, however version 7.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Processing c:\work\py\scipy-0.16.0-cp27-none-win_amd64.whl
Installing collected packages: scipy

Successfully installed scipy-0.16.0

import が成功することを確認

(math_env) c:\Programs\venv\math_env>python
Python 2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import scipy
>>> scipy

めでたし。めでたし。準備完了。

学校では教えてくれない!これ1冊で高校数学のホントの使い方がわかる本

 

非常に面白い。高校時代に読みたかったなぁ。