しろの電電日記

適当なログ

Python2.7系と3.4系でそれぞれ64bitなscipyを使えるようにする@windows7

公開後にpath関連で少し修正しました.
2.7系列と3.4系列を同時に使えるようにするためのメモ.

Windows7 64bitで64bit版のpythonからnumpy+scipy+matplotlibを使えるようにする.
デフォルトは3.4系列を使う.


インストール

2.7系のインストール

2.7系はEnthought Canopy*1でインストール.インストール先はユーザーフォルダ以下で

C:\Users\<username>\AppData\Local\Enthought\Canopy\App

とかにいる.Canopyでインストールすればnumpyとかscipyは一緒にインストールされる.
64bitでも特に問題なし.

3.4系のインストール

3.4系列はpython公式HPからダウンロードしてインストール.64bit版を選ぶ.デフォルトだとインストール先は

C:\Python34\

numpyscipymatplotlibは個別にインストールする.ただし,公式は32bit版のインストーラしか用意されていない.
そこで,
Python Extension Packages for Windows - Christoph Gohlke
を利用させて貰う.過去はここで64bit用のexeが用意されていたみたいだけど,今はwhlファイルで配付されている.ここから各種whlファイルをダウンロードしてくる.インストールにはpipを使う.
python3.4以上はpipがデフォルトでインストールされている.3.3系の場合は別に入れてくる.
これらのインストール時は2.7系と3.4系で混じるとめんどくさい*2ので,

C:\Python34\Scripts\

にpip.exeがいるので,ここにダウンロードしたファイルを移動してから

$ pip install "numpy-1.9.2+mkl-cp34-none-win_amd64.whl"
$ pip install "scipy-0.15.1-cp34-none-win_amd64.whl"
$ pip install "matplotlib-1.4.3-cp34-none-win_amd64.whl"

みたいな感じでnumpyなどをインストールする.

環境の切り替え

エイリアスの設定

環境の切り替えを容易にするためにエイリアスを作る.

$ doskey python27="C:\Users\<usernamer>\AppData\Local\Enthought\Canopy\User\python.exe"
$ doskey python34="C:\Python34\python.exe"

これでどこからでもpython27とpython34と打てば2.7と3.4を適切に使い分けられる.
ただし,doskeyの設定はコマンドプロンプトを一度閉じると消えてしまう.
そこで,コマンドプロンプトの起動時に自動でdoskey登録を行うように設定する.
上のコマンドを

C:\Users\Username\macros.txt

に保存する.
その後,レジストリエディタから
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
に字列値「AutoRun」を追加して,データ値を

doskey /macrofile=%userprofile%\macros.txt

としておく.これでコマンドプロンプトの起動時にdoskeyが設定される.

確認
$ python27
$ python34

でそれぞれ2.7系と3.4系が呼び出せる.

C:\Users\<usernmae>>python27
Enthought Canopy Python 2.7.6 | 64-bit | (default, Sep 15 2014, 17:36:35) [MSC v
.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>>

C:\Users\<usernmae>>
C:\Users\<usernmae>>python34
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct  6 2014, 22:16:31) [MSC v.1600 64 bit (AM
D64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> ^Z


C:\Users\<usernmae>>

こんな感じでコマンドラインも変化するはず.

補足:Mac

Macも似たような感じでできるけど,あちらはmacportかHomebrewあたりでもっと簡単にできた.

追記

pathが通ってないかと思ったけど見落としてただけでちゃんと通ってた.なので環境変数設定用のbatは必要ないですね.ちょくせつpythonを呼び出してやればOKです.GUIなpythonwとかも含めて使いたい場合は環境変数のbatファイルを作った方が良いかも.

以下修正前の環境変数切り替え部分

環境変数の切り替え用batファイルの作成
C:\Users\<username>\AppData\Local\Enthought\Canopy\User\Scripts\activate.bat

を参考に作る.このファイルの中で

@echo off
set "VIRTUAL_ENV=C:\Users\<username>\AppData\Local\Enthought\Canopy\User"
(中略)
set "PROMPT=(Canopy 64bit) %PROMPT%"
(中略)
:END

となっているのを

@echo off
set "VIRTUAL_ENV=C:\Users\<username>\AppData\Local\Enthought\Canopy\User"
(中略)
set "PROMPT=(Python2.7@Canopy 64bit) %PROMPT%
(中略)
:END

とかにして環境変数の設定と,コマンドラインの表示で2.7系列に設定しているのを明示する.

このactivate.batをC:\Python34にもコピーして,こちらは

@echo off
set "VIRTUAL_ENV=C:\Python34"
(中略)
set "PROMPT=(Python3.4 64bit) %PROMPT%"
(中略)
:END

として3.4系の環境であるのを強調しておく.これで,これらのbatファイルを呼び出すごとに2.7系列と3.4系列の環境が切り替えられる.
エイリアスも同様に書き換えておく.

$ doskey python27="C:\Users\<username>\AppData\Local\Enthought\Canopy\User\Scripts\activate.bat"
$ doskey python34="C:\Python34\activate.bat"

*1:学生だとEnthought Canopyのアカデミックライセンスが無料で使えるのでお勧め

*2:2.7系のpipが呼ばれないようにエイリアス設定してからダウンロードフォルダでpip実行しても上手くいかなかった