2017/08/09

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を使うことにしました。

前の記事:
次の記事: