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"
に書換えて、再実行。
――→できた。