windowsでmecab-pythonを入れるのがとても大変だった(64bit win10, Python 3.6, MeCab 0.996, VC2017)追記あり
windowsでmecab-pythonを入れようとしたらとても大変だったのでメモ。うろ覚えのところもあります。こちらの環境は、64bit windows 10(7からアップグレード), Python 3.6, MeCab 0.996, VC2017です。
mecab-configがない
MeCabを入れる。「Binary package for MS-Windows」を使ってインストール。これはすんなり入る。
VC2017の画面で、mecab-pythonを入れられそうな雰囲気があったので、pipインストールしてみようとすると、「mecab-configがない」などといわれて、止まる。mecab-python3も同じエラーで止まる。
先ほどのMeCabのサイトから、「perl/ruby/python/java バインディング」にいって、「mecab-python-0.996」をダウンロードする。解凍し、
python setup.py build
を実行してみるが、エラー。
はじめは、ここなどを参考にする。Windowsにmecab-pythonを導入 - 個人的まとめ
とりあえず、mecab-configがないことへの対応として、setup.pyを次のように変えます。上が変更前、下が変更後。
setup(name = "mecab-python", version = cmd1("mecab-config --version"), py_modules=["MeCab"], ext_modules = [ Extension("_MeCab", ["MeCab_wrap.cxx",], include_dirs=cmd2("mecab-config --inc-dir"), library_dirs=cmd2("mecab-config --libs-only-L"), libraries=cmd2("mecab-config --libs-only-l")) ])
setup(name = "mecab-python", version = "0.996", py_modules=["MeCab"], ext_modules = [ Extension("_MeCab", ["MeCab_wrap.cxx",], include_dirs=["C:\Program Files (x86)\MeCab\sdk"], library_dirs=["C:\Program Files (x86)\MeCab\sdk"], libraries=["libmecab"]) ])
ディレクトリは、環境によって変更が必要。
これで実行してみると、エラー。「vcvarsall.batがない」とか言われる。
vcvarsall.batがない
入っているPythonに応じたCコンパイラがいるらしい。その対応表はここにある。3.6なら、VC++は14.0。これは、VC++ 2015のことで、対応するビルドツールはここにある。とりあえず、これを入れる。
2017を使っているのに2015も必要だなんて。
これで実行してみる。エラー。「basetsd.hがない」とか言われる。
basetsd.hがない
windowsのヘッダーファイル。このファイル自体を検索したら、「C:\Program Files (x86)\Windows Kits\8.1」の下にあった。うーん、よくわかんないけど、7からアップグレードしたから、10に行ってないのかな。
これを10のフォルダにコピペすればいいのかな、と思ってコピペ。そして実行すると、次は別のヘッダーファイルがないと言われる。コピペ。ヘッダーファイルがない。コピペ。ヘッダーファイルがない。コピペ。
しばらく繰り返していたんだけど、さすがにおかしい。何かもっと根本的な解決策があるはず。
で、「すべての設定」「アプリと機能」「Windows Software Development Kit」を選択し、「変更」。Changeを選んで、すべてのチェック項目を選択。しばらくすると、なかったヘッダーファイルができていた。素晴らしい。
これで実行してみる。エラー。「set_resultがない」と言われる。上の記事に基づいて、mecab.hに追記する。
これで実行してみる。エラー。「unresolved externals」みたいなエラーが11個くらい出る。
うーん、上の記事ではもううまくいっているはずなのに。
unresolved externals
ここらへんで、64bit Windows + python 2.7 + MeCab 0.996 な環境をつくる - Qiitaに切り替えて、格闘。
環境変数の設定、ソースの修正(パスは適宜変える。あと、mecab.h内のSIWGの間違いは全部修正する)、ビルド、ファイルコピペ、setup.pyの書き換え、などを上の記事を見ながら実施。
これで実行してみる。エラー。「"rc.exe"が実行できない」みたいなエラーが出る。
rc.exeが実行できない
rc.exeについて調べてみると、64bit - LNK1158 cannot run rc.exe x64 Visual Studio - Stack Overflowというページを発見。これによると、rc.exe と rcdll.dll の2つのファイルを、C:\Program Files (x86)\Windows Kits\8.1\bin\x86 から C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64 へコピペすればいいようだ。
これで実行してみる。成功! やっと! 試行錯誤しながらやっていたら、半日×2くらいかかった。
追記(2017/08/14)
インストールはうまくいったけど、実際に動かしてみると、文字コード関連のエラーが多発。その結果、MeCabは諦めて、janomeを使うことにしました。