WindowsでPythonのライブラリをコンパイルする方法
Windowsで misakaをインストールしようとしたらエラーが発生した。
$ pip install misaka
調べてみたらVisual Studio 2008をインストールすればよいようだが、今更古いバージョンをインストールする気にはなれず、とりあえず Visual Studio Express 2013 for Windows Desktop をインストールするも解消せず。
調べてみたところ以下のブログを発見。 街角のリブロガー: pythonでvcvarsall.batエラーが出る。
まずは、 from distutils.msvc9compiler import * get_build_version() これで現在のバージョンを調べる。 10.0なら HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VisualStudio\10.0\Setup\VC\ProductDir ここに文字列で C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC を入れて、 find_vcvarsall()を実行してみて、 ちゃんと戻り値が得られている事をチェックする。 これで完了。
$ python -i Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 18 2013, 21:19:30) [MSC v.1600 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from distutils.msvc9compiler import * >>> get_build_version() 10.0 >>> get_platform() 'win-amd64'
おそらくpythonをコンパイルしたときと同じコンパイラを使用しようとするが、存在しないのでエラーになるのだと思う。そこで、無理矢理Visual Studio 2013のコンパイラを使用するように設定を変更すると、find_vcvarall()メソッドが通り、コンパイルもできるようになった。
$ python -i Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 18 2013, 21:19:30) [MSC v.1600 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from distutils.msvc9compiler import * >>> find_vcvarsall(get_build_version()) 'C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat'
変更したのは以下の2カ所
レジストリの編集
レジストリエディタで 以下のキーを作成し
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Setup\VC
文字列の値を次のように設定
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC
vcvarsall.batの編集
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
を確認したところ x86_amd64
ディレクトリが存在したので
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat
を編集し
if /i %1 == amd64 goto amd64
を次のように書き換えた
if /i %1 == amd64 goto x86_amd64