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が紹介されていた。
確認すると、バイナリファイルは、.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-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冊で高校数学のホントの使い方がわかる本
非常に面白い。高校時代に読みたかったなぁ。