pythonへのnkfのインストールで error: Unable to find vcvarsall.bat になる時

pythonを使う上でどうしても避けて通れない「文字コードの変換」。 最も有名で手軽なのがnkfを使うことですが、うちのパソコンでなぜかインストールに引っかかったのでメモしておきます。

参考にしたのはこちら。 街角のリブロガー: pythonでvcvarsall.batエラーが出る。

ということで探してみたら、 distutils\msvc9compiler.pyのfind_vcvarsall関数で取得している事が分かった。 この中でやっていることはレジストリ情報からvsvarsall.batのありかを調べているので 現在使っているコンパイラで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() を実行してみて、 ちゃんと戻り値が得られている事をチェックする。

レジストリに値を書込み(自分の環境では既に入っていた)、本来はこれで終わるはずですが、それでも失敗するので…奥の手。 msvc9compiler.pyというファイルの vcvarsall = find_vcvarsall(version) となっているところを vcvarsall = "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/vcvarsall.bat" に書換えて、再実行。 ――→できた。