Hatena::ブログ(Diary)

うおっ

2012-09-26

[][]Windows7 32bit + Python 2.7.3 で MeCab 0.994の Pythonバインディングをインストール 18:47

これまで何回かコンパイルに失敗してて、初めてうまくいったのでメモ。

追記(2013-09-08)

この記事で使われている Python と MeCab のバージョンはちょっと古いです。

新しめのバージョンでのインストールについて、記事を書いてくださっている方がいるのでこちらもどうぞ。

Windowsにmecab-pythonを導入 - 個人的まとめ


Python 2.7.3 のインストール

Download Python | Python.org から Python 2.7.3 Windows Installer をダウンロードし、インストーラを起動してインストールする。

今回は C:\Python27\ (初期設定)にインストールした。

インストール後、 C:\Python27 に PATH を通す。

環境変数の編集は Rapid Environment Editorを使うと楽。


MeCab 0.994 のインストール

Error 404 (Not Found)!!1 から mecab-0.994.exe をダウンロードし、インストール。

「辞書の文字コード選択」は UTF-8 を選んだ方がいい。らしい。

C:\Program Files\MeCab (初期設定)にインストールした。

インストール後、 C:\Program Files\MeCab\bin に PATH を通す。



MeCab の Python バインディングをインストール

Google Project Hosting から mecab-python-0.994.tar.gz をダウンロードし、解凍する。

setup.py の書き換え

setup.py をテキストエディタで開き、 version, include_dirs, library_dirs, libraries の箇所を以下のように書き換える。

参考: Windows での mecab 0.993 python バインディングモジュール(32/64ビット)の作り方メモ: takayanの雑記帳

#!/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 = "0.994",
	py_modules=["MeCab"],
	ext_modules = [
		Extension("_MeCab",
			["MeCab_wrap.cxx",],
			include_dirs=["C:\Program Files\MeCab\sdk"],
			library_dirs=["C:\Program Files\MeCab\sdk"],
			libraries=["libmecab"])
			]

vcvarsall.bat の入手

この時点では setup.py を実行しても以下のエラーが出る。

error: Unable to find vcvarsall.bat

vcvarsall.bat を入手するために、 Visual C++ 2008 Express Edition をインストールする。

http://go.microsoft.com/?LinkId=9348304

インストール設定は初期設定でいい。(SQL Server は今回は必要ないかも)

インストール後、C:\Program Files\Microsoft Visual Studio 9.0\VCPATH を通す。


バインディングのビルドとインストール

コマンドラインで python setup.py install を実行する。

C:\mecab-python-0.994>python setup.py install
running install
running build
running build_py
creating build
creating build\lib.win32-2.7
copying MeCab.py -> build\lib.win32-2.7
running build_ext
building '_MeCab' extension
creating build\temp.win32-2.7
creating build\temp.win32-2.7\Release
C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W
3 /GS- /DNDEBUG "-IC:\Program Files\MeCab\sdk" -IC:\Python27\include -IC:\Python
27\PC /TpMeCab_wrap.cxx /Fobuild\temp.win32-2.7\Release\MeCab_wrap.obj
MeCab_wrap.cxx
MeCab_wrap.cxx(3738) : warning C4530: C++ 例外処理を使っていますが、アンワインド
 セマンティクスは有効にはなりません。/EHsc を指定してください。
C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\link.exe /DLL /nologo /INCRE
MENTAL:NO "/LIBPATH:C:\Program Files\MeCab\sdk" /LIBPATH:C:\Python27\libs /LIBPA
TH:C:\Python27\PCbuild libmecab.lib /EXPORT:init_MeCab build\temp.win32-2.7\Rele
ase\MeCab_wrap.obj /OUT:build\lib.win32-2.7\_MeCab.pyd /IMPLIB:build\temp.win32-
2.7\Release\_MeCab.lib /MANIFESTFILE:build\temp.win32-2.7\Release\_MeCab.pyd.man
ifest
   ライブラリ build\temp.win32-2.7\Release\_MeCab.lib とオブジェクト build\temp.
win32-2.7\Release\_MeCab.exp を作成中
running install_lib
copying build\lib.win32-2.7\_MeCab.pyd -> C:\Python27\Lib\site-packages
running install_egg_info
Writing C:\Python27\Lib\site-packages\mecab_python-0.944-py2.7.egg-info

C:\mecab-python-0.994>

python test.py を実行すれば、インストールできたかどうか確認できる。

(下の例はコマンドプロンプトで UTF-8 を表示しようとしてるので文字化けしているが、ちゃんと動いている)

C:\mecab-python-0.994>python test.py
0.994
螟ェ驛・蜷崎ゥ・蝗コ譛牙錐隧・莠コ蜷・蜷・*,*,螟ェ驛・繧ソ繝ュ繧ヲ,繧ソ繝ュ繝シ
縺ッ     蜉ゥ隧・菫ょ勧隧・*,*,*,*,縺ッ,繝・繝ッ
縺薙・  騾」菴楢ゥ・*,*,*,*,*,縺薙・,繧ウ繝・繧ウ繝・
譛ャ     蜷崎ゥ・荳€闊ャ,*,*,*,*,譛ャ,繝帙Φ,繝帙Φ
繧・蜉ゥ隧・譬シ蜉ゥ隧・荳€闊ャ,*,*,*,繧・繝イ,繝イ
莠・蜷崎ゥ・謨ー,*,*,*,*,莠・繝・繝・
驛・蜷崎ゥ・荳€闊ャ,*,*,*,*,驛・繝ュ繧ヲ,繝ュ繝シ
繧・蜉ゥ隧・譬シ蜉ゥ隧・荳€闊ャ,*,*,*,繧・繝イ,繝イ
隕・蜍戊ゥ・閾ェ遶・*,*,荳€谿オ,騾」逕ィ蠖「,隕九k,繝・繝・
縺・蜉ゥ蜍戊ゥ・*,*,*,迚ケ谿翫・繧ソ,蝓コ譛ャ蠖「,縺・繧ソ,繧ソ
螂ウ諤ァ  蜷崎ゥ・荳€闊ャ,*,*,*,*,螂ウ諤ァ,繧ク繝ァ繧サ繧、,繧ク繝ァ繧サ繧、
縺ォ     蜉ゥ隧・譬シ蜉ゥ隧・荳€闊ャ,*,*,*,縺ォ,繝・繝・
貂。縺・蜍戊ゥ・閾ェ遶・*,*,莠疲ョオ繝サ繧オ陦・騾」逕ィ蠖「,貂。縺・繝ッ繧ソ繧キ,繝ッ繧ソ繧キ
縺・蜉ゥ蜍戊ゥ・*,*,*,迚ケ谿翫・繧ソ,蝓コ譛ャ蠖「,縺・繧ソ,繧ソ
縲・險伜捷,蜿・轤ケ,*,*,*,*,縲・縲・縲・
EOS

        BOS/EOS,*,*,*,*,*,*,*,*
螟ェ驛・ 蜷崎ゥ・蝗コ譛牙錐隧・莠コ蜷・蜷・*,*,螟ェ驛・繧ソ繝ュ繧ヲ,繧ソ繝ュ繝シ
縺ッ     蜉ゥ隧・菫ょ勧隧・*,*,*,*,縺ッ,繝・繝ッ
縺薙・  騾」菴楢ゥ・*,*,*,*,*,縺薙・,繧ウ繝・繧ウ繝
譛ャ     蜷崎ゥ・荳€闊ャ,*,*,*,*,譛ャ,繝帙Φ,繝帙Φ
繧・    蜉ゥ隧・譬シ蜉ゥ隧・荳€闊ャ,*,*,*,繧・繝イ,繝イ
莠・    蜷崎ゥ・謨ー,*,*,*,*,莠・繝・繝
驛・    蜷崎ゥ・荳€闊ャ,*,*,*,*,驛・繝ュ繧ヲ,繝ュ繝シ
繧・    蜉ゥ隧・譬シ蜉ゥ隧・荳€闊ャ,*,*,*,繧・繝イ,繝イ
隕・    蜍戊ゥ・閾ェ遶・*,*,荳€谿オ,騾」逕ィ蠖「,隕九k,繝・繝
縺・    蜉ゥ蜍戊ゥ・*,*,*,迚ケ谿翫・繧ソ,蝓コ譛ャ蠖「,縺・繧ソ,繧ソ
螂ウ諤ァ  蜷崎ゥ・荳€闊ャ,*,*,*,*,螂ウ諤ァ,繧ク繝ァ繧サ繧、,繧ク繝ァ繧サ繧、
縺ォ     蜉ゥ隧・譬シ蜉ゥ隧・荳€闊ャ,*,*,*,縺ォ,繝・繝
貂。縺・ 蜍戊ゥ・閾ェ遶・*,*,莠疲ョオ繝サ繧オ陦・騾」逕ィ蠖「,貂。縺・繝ッ繧ソ繧キ,繝ッ繧ソ繧キ
縺・    蜉ゥ蜍戊ゥ・*,*,*,迚ケ谿翫・繧ソ,蝓コ譛ャ蠖「,縺・繧ソ,繧ソ
縲・    險伜捷,蜿・轤ケ,*,*,*,*,縲・縲・縲
        BOS/EOS,*,*,*,*,*,*,*,*
EOS
EOS
filename: C:\Program Files\MeCab\etc\..\dic\ipadic\sys.dic
charset: UTF-8
size: 392126
type: 0
lsize: 1316
rsize: 1316
version: 102