Windows環境にPython 3.5.1+numpy+scipy+αをインストール

Windows環境にPython 3.5.1+numpy+scipy+αをインストールした際のまとめ
(Pythonはじめて1週間程度の人間が書いています)

# OS
Windows 10 Pro (64 bit)

# インストールしたPythonのバージョン
Python 3.5.1 (32 bit)

# pipでインストールしたPythonのライブラリ
wheel (0.29.0)
numpy (1.10.4)
scipy (0.17.0)
pandas (0.17.1)
matplotlib (1.5.1)
scikit-learn (0.17)

# Python 3.5.1のインストール
1. https://www.python.org/ にアクセス
2. [Downloads/Windows/Python 3.5.1]を選択し[python-3.5.1.exe]をダウンロード
3. [python-3.5.1.exe]を実行
4. 最初の画面で[Add Python 3.5 to PATH]にチェックを入れて、[Install Now]をクリック
5. コマンドプロンプトからpythonが起動できることを確認

```shell-session:
C:\Users\ktanaka>python
Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:38:48) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

C:\Users\ktanaka>
```

# pipのアップグレード
Python 3.4からパッケージ管理ツールpipが標準でインストールされている。
コマンドプロンプトから以下のコマンドを実行しpipをアップグレード

```shell-session:
C:\Users\ktanaka>python -m pip install --upgrade pip
Collecting pip
  Downloading pip-8.0.2-py2.py3-none-any.whl (1.2MB)
    100% |################################| 1.2MB 227kB/s
Installing collected packages: pip
  Found existing installation: pip 7.1.2
    Uninstalling pip-7.1.2:
      Successfully uninstalled pip-7.1.2
Successfully installed pip-8.0.2

C:\Users\ktanaka>
```

以降の説明では、

```shell-session:
C:\Users\ktanaka>python -m pip install --upgrade pip
```

の様なコマンドプロンプトからの実行は

```shell-session:
python -m pip install --upgrade pip
```

と表記し、ログも省略します。
python -mで始まる表記があったら、コマンドプロンプトからの実行を意味しています。

# wheelパッケージのインストール
バイナリを含んだ.whlファイルをpipでインストールする為の仕組み・・・とどこかで読んだ気がする

```shell-session:
python -m pip install wheel
```

# numpy, scipyのインストールに関して
numpyやscipyは内部で数値演算ライブラリを呼び出しています。よって数値演算ライブラリのバイナリとnumpy, scipyが関連付けられる必要があります。今回はいろいろと試したのですが、scipyのインストールで苦労しました。scipyがnumpyと関連づいているらしいので、numpyのインストールも含めて自分の環境における失敗事例と共に説明します。

## pipでの通常インストール(失敗)

```shell-session:pipを用いたnumpy,scipyの通常インストール
python -m pip install numpy
python -m pip install scipy
```

ログを見た感じだとnumpy, scipyのインストール処理はそれぞれ以下の様になっているようです。

```text:numpy
環境に数値演算ライブラリがインストールされているかどうかを確認
　インストールされている
　　インストールされている数値演算ライブラリと関連付けてnumpyをインストール
　インストールされていない
　　Visual Studio等のコンパイラがインストールされているかどうかを確認
　　　インストールされている
　　　　コンパイラを用いて数値演算ライブラリのバイナリを生成し、生成したバイナリと関連付けてnumpyをインストール
　　　インストールされていない
　　　　インストール失敗
```


```text:scipy
環境に数値演算ライブラリがインストールされているかどうかを確認
　インストールされている
　　インストールされている数値演算ライブラリと関連付けてscipyをインストール
　インストールされていない
　　インストール失敗
```

numpyに関しては自分の環境が
　「数値演算ライブラリがインストールされていない」
　「Visual Studio 2015がインストールされている」
となっていたので、Visual Studio 2015によるコンパイルが大量に走った後、インストールに成功しました。

scipyに関しては失敗しました。インストール処理が
「numpyと同様にソースコードが同封されていてVisual Studio 2015でバイナリを生成する等の処理が走る」
もしくは
「numpyで作成したバイナリと関連付ける」
となっていてくれたらうれしかったのですが、そうはならず、エラーで終了しました。

※numpyインストール時に、数値演算ライブラリがインストールされている場合に、Visual studio等のコンパイラが環境にインストールされている必要があるかどうかについては調べていません。

##superpackを利用する方法(断念)
2016/02/17の段階だとPython 3.5.1に対応したものがなかったので断念
https://sourceforge.net/p/numpy/activity/
https://sourceforge.net/p/scipy/activity/

##コンパイル済みバイナリが同封された.whlファイルを用いたpipインストール(成功)
最終的にこの方法でインストールしました。

1. http://www.lfd.uci.edu/~gohlke/pythonlibs/ にアクセス
2. numpy-1.10.4+mkl-cp35-none-win32.whl および scipy-0.17.0-cp35-none-win32.whlをダウンロード<br>
※Python 3.5.1 なので xxxcp35xxx.whlを選択しています。<br>
※numpyはmkl(Intel Math Kernel Library)が付属した.whlファイルを選択しています。
3. pipを使ってインストール

```shell-session:コンパイル済みバイナリが同封された.whlファイルを用いたpipインストール
python -m pip install C:\Users\ktanaka\Downloads\numpy-1.10.4+mkl-cp35-none-win32.whl
python -m pip install C:\Users\ktanaka\Downloads\scipy-0.17.0-cp35-none-win32.whl
```

この方法で、インストールおよびサンプルスクリプトの実行に成功しました。

##補足
以下の組み合わせでインストールを行った場合、インストールには成功するのですが、スクリプト実行時にエラーが出ました。

```shell-session:コンパイル済みバイナリが同封された.whlファイルを用いたpipインストール
python -m pip install numpy
python -m pip install C:\Users\ktanaka\Downloads\scipy-0.17.0-cp35-none-win32.whl
```

```py:実行したPythonスクリプト
from scipy import stats
```

```text:エラーの内容
・・・
  from ._ufuncs import *
ImportError: DLL load failed: The specified module could not be found.
```

numpyとscipyで同じ数値演算ライブラリが参照されるようにインストールする必要があるようで、配布サイトの説明文にも「配布しているバイナリ(.whl)はnumpy+mkl(Intel Math Kernel Library)に依存していているよ」と書いてあるので同サイトで配布されているnumpyの.whlを使ってインストールを行う事で成功しました。

```text
Many binaries depend on NumPy-1.10+MKL and the Microsoft Visual C++ 2008 (x64, x86, and SP1 for CPython 2.6 and 2.7), Visual C++ 2010 (x64, x86, for CPython 3.3 and 3.4), or the Visual C++ 2015 (x64 and x86 for CPython 3.5) redistributable packages.
```

#その他のパッケージのインストール
以下のパッケージのインストールを行いました。
pandas (0.17.1)
matplotlib (1.5.1)
scikit-learn (0.17)

```shell-session:
python -m pip install pandas
python -m pip install matplotlib
python -m pip install scikit-learn
```

pip便利

#終わりに
WindowsでのPython開発環境構築において

- 最初から色々なパッケージがそろっているAnacondaが便利
- WindowsへのPythonインストールは困難

という事前情報を聞いていたのですが

- 最小構成でインストールがしたい
- Pythonのパッケージ管理周りのことを理解しておきたい
- http://qiita-kobito-team-meetup14.peatix.com/ に参加した際に、Atomエディタがすごいらしいと聞いていたので使いたい:D
- pip等が標準実装されていてインストール作業が大分楽になっているらしい

といった理由からインストールをしてみました。
numpyやscipyのアップデートも考えると、数値演算ライブラリを別途インストールして、通常のpipでインストールできるようになるとより良いと思います。（その方法でうまくいくかどうかは不明）時間が出来たら試してみます。

今はAtomエディタにscriptパッケージを追加して、Ctrl+Shift+Bで実行してます。
でもAnacondaだと選択した行のみの実行等が出来て便利です。
Atomエディタのパッケージで選択行実行が出来るパッケージ知っている方がいたら教えてもらえると幸いです_(._.)_

#参考にしたサイト
整理中