MeCab-0.98 python binding for Windows のビルド¶
Pythonで MeCab を使用するには MecCab-pythonバインディング を使用しますが、バンディングはビルド済みのものが提供されていないので、自分でビルドする必要があります。Linuxや*BSDならそれほどはまらないと思いますが、Windowsではコンパイル環境があってもはまったので、バインディングビルド手順をメモしておきます(完成物はこちら: mecab-python-0.98-win32-binary-20110504.zip
)。
バインディングをビルドする手順¶
この記事で対象にしているバージョン
Windows7 (95以降共通と思われる)
Python-2.7
MeCab-0.98
mecab-python-0.98.tar.gz
VisualC++ 2008 Express Edition (無料版)
環境の用意¶
Windowsを用意します。そこにPython-2.7, MeCab-0.98, VisualC++ 2008 Express Editionをインストールしておきます。
mecab-python-0.98.tar.gz を展開してsetup.pyを書き換える¶
mecab-python-0.98.tar.gz に同梱されているsetup.pyには以下のような行があります:
version = cmd1("mecab-config --version"),
しかしWindowsではMeCabをインストールしてもmecab-configが無いのでこのままでは動きません。そこで以下のように書き換えます。
元のsetup.py:
#!/usr/bin/env python
from distutils.core import setup,Extension,os
import string
def cmd1(str):
return os.popen(str).readlines()[0][:-1]
def cmd2(str):
return string.split (cmd1(str))
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.py:
#!/usr/bin/env python
from distutils.core import setup, Extension
setup(name = "mecab-python",
version = '0.98',
py_modules=["MeCab"],
ext_modules = [
Extension("_MeCab",
["MeCab_wrap.cxx",],
include_dirs=[r'C:\Develop\Mecab\sdk'],
library_dirs=[r'C:\Develop\Mecab\sdk'],
libraries=['libmecab'])
])
上記は、MeCabが C:\Develop\Mecab\
にインストールされている場合です。それ以外にインストールしている場合は適宜パスを書き換えて使用してください。
そして python setup.py dist
を実行してビルドします。
しかし、上記のようにエラーになってしまいます。
python setup.py bdistを実行するとビルドに失敗するのでコードを書き換える¶
既に同じようなbindingをRuby用に作っていた経験から、エラーになる原因はわかっています。そこで、Ruby版と同じように MeCab.Tagger.version
と MeCab.Tagger.create
をあきらめる方向で対策します。
MeCab_wrap.cxx の以下の2行を削除かコメントアウトします(5597行あたり):
{ (char *)"Tagger_create", _wrap_Tagger_create, METH_VARARGS, NULL},
{ (char *)"Tagger_version", _wrap_Tagger_version, METH_VARARGS, NULL},
これでビルドが通るはず。
改めてpython setup.py bdist を実行してMeCab.pydを作成する¶
正確には MeCab.py と _MeCab.pyd が作成されます。
これでMeCabのPythonバインディングが作成出来ました。
python setup.py bdist の代わりに python setup.py install
とすれば直接使用している環境にインストールすることもできます。
完成物(python2.7, 2.6用)と変更を加えたファイルを公開しておきます。ライセンスなどは元のMeCabのものに従います。egg化とかは要望があれば。