研究ブログ

研究ブログ >> 記事詳細

2012/07/13

cython を windows 64bit 版で使う方法

Tweet ThisSend to Facebook | by Kenta
python 数値計算 tips
cython を windows 64bit 版で使う方法
07/13/2012

現在、pythonの最新版は3.2.3だと思います。
この下で、cythonを使えるようにする方法をメモします。

64bit環境でcythonを使う時、minGW64ではエラーになってしまいます。
そこで、Windows SDKとVCのコンパイラを導入します。

手順(1. は適宜飛ばしてください):

1.
numpy, cython  (欲しければ、matplotlib, scipy) を

Christoph Gohlke, Laboratory for Fluorescence Dynamics, University of California, Irvine.
http://www.lfd.uci.edu/~gohlke/pythonlibs/

からダウンロードし、インストールします。

numpyの計算パワーは、後ろで使われるC言語のライブラリに依存します。
上記のページでは、特に高速であるとされる intel MKLを使ってビルドされた
numpyのパッケージが提供されていますので、それを使うといいと思います。
計算する行列の規模に応じて、自動的に並列計算が行われるようです。

pythonの中では、3.2よりも2.6や2.7の方が高速だそうですが、私の場合は
計算のうち殆どがnumpyによって行われるので、気にしていませんでした。
今思えば、数値計算しかする事が無いのに、「新しい方がいいだろ」という
理由でpython3に手を出した事には反省します…。

2.
Windows SDK for Windows 7 and .NET Framework 3.5 SP1
および
VC++ 2008 Express Edition
を、

http://www.microsoft.com/en-us/download/details.aspx?id=3138

http://go.microsoft.com/?LinkId=9348304

からダウンロードし、インストールする。

この組み合わせが良いようです。自分の凡ミスのせいでわからずじまい
でしたが、SDKの方はfor .NET Framework 4 (v7.1)の方でもいけるかもしれません。
ただし、おそらくcythonの開発環境の関係で、C コンパイル環境の方は2008のものでなければ
ならないようです。VC++ 2010 のものではコンパイルの時バッチファイルが反応しません。

3.
PATHを通す。
とりあえず、VCのコンパイラがあるフォルダ、バッチファイル(vcvarsall.bat)があるフォルダ、
SDKのライブラリのフォルダなどにPATHを通しました。どこまでが必要十分かはわかりません。

4.
以下のバッチファイル(.bat)を作る(私はこれでバッチファイルを初めて作りました)

CD C:\Program Files\Microsoft SDKs\Windows\v7.0
set DISTUTILS_USE_SDK=1
C:\Windows\System32\cmd.exe /E:ON /V:ON /T:0E /K "C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\Setenv.cmd" /x64 /release

フォルダやファイルの場所が違ったら適宜変えて使ってください。
上手くいくと、コンソールの文字が緑色になります。

5.
pythonファイルがあるフォルダに移動し、

python setup.py build_ext --inplace

で.pyxファイルをコンパイル。
コンパイルエラーが無ければ実行できるパッケージが作成されると思います。


かなり手こずりましたが、色々と参考にさせて頂いて、これで上手くいきました…

もともとpythonはインタプリタ言語なので、コンパイラ言語に比べて非力なのですが、
cythonによって作成されたC コンパイルのパッケージを使うことで、特に配列参照ループ
などが高速化されるようです。強力なMKL numpyと組み合わせることで、生産性を損なわずに
C環境にひけをとらない性能のプログラムが組めるのでは、と期待しています。

全くの初心者ですが、最近Linuxマシンを導入しましたので、そちらはnumpyをGotoBLASを
使ってビルドして試してみたいと思っています。

追記:
すでにminGWをインストールしてしまった場合、ユーザーフォルダ内の
pydistutils.cfg を書き換える必要があります。

[build_ext]
compiler=msvc

のように書き換えてください。もちろん、自分で

[build]
compiler=mingw32 

といったdistutils.cfg ファイルを作成していた場合は、削除してください。

pydistutils.cfgは複数生成されている可能性があるので、片っ端から
書き換える必要があるかもしれません。
14:14 | 投票する | 投票数(2) | コメント(0) | テクノロジー