プロメモグラム

誰が見てもわかるような文章を目指す

MeCab-Pythonの導入手順(CentOS6)

環境

Mecabインストール手順

バインディングのダウンロード

MeCabPythonで使用できるようにしたバインディングをダウンロード

バインディングのインストール

  • setup.pyを実行することでインストールしてくれる
  • 管理者権限に移動するがsudoだとmecabのパスが通っていないためNG
  • シンボリックリンクを張ることで解決,mecab-configのパスが違う可能性があるのでfindコマンドなどで調べる
$ python setup.py build
$ sudo ln -s /usr/local/bin/mecab-config /usr/bin/mecab-config
$ sudo python setup.py install

試す

# coding: UTF-8
import sys
import MeCab

m = MeCab.Tagger("-Ochasen")
print m.parse("カレーとパスタを同時に食す")

実行

[vagrant@localhost python]$ python m1.py
カレー  カレー  カレー  名詞-一般
と      ト      と      助詞-並立助詞
パスタ  パスタ  パスタ  名詞-一般
を      ヲ      を      助詞-格助詞-一般
同時に  ドウジニ        同時に  副詞-一般
食す    ショクス        食する  動詞-自立       サ変・-スル    文語基本形
EOS

問題発生時

Python.hが見つからないというようなエラー

  • このようなエラーメッセージ
MeCab_wrap.cxx:149:20: fatal error: Python.h: No such file or directory
 #include <Python.h>
  • python-develがインストールされていないようなのでyumでインストール
sudo yum -y install python-devel

インストールは終了したがimportしようとするとエラー

  • このようなエラーメッセージ
Traceback (most recent call last):
  File "m1.py", line 3, in <module>
    import MeCab
  File "/usr/lib64/python2.7/site-packages/MeCab.py", line 25, in <module>
    _MeCab = swig_import_helper()
  File "/usr/lib64/python2.7/site-packages/MeCab.py", line 21, in swig_import_helper
    _mod = imp.load_module('_MeCab', fp, pathname, description)
ImportError: libmecab.so.2: cannot open shared object file: No such file or directory

動的ライブラリのlibmecab.so.2が見つからないということです.
共通ライブラリのパスを通すには,/etc/ld.so.confに追加するのが楽.
ld.so.conf.dディレクトリ下に*.confで保存すると読み込んでくれる.
findで調べたところ/usr/local/libにあった.

$ sudo find / -name "libmecab.so.2" #ライブラリの場所を探す
$ su
# echo /usr/local/lib > /etc/ld.so.conf.d/py.conf
# ldconfig #更新

ImportError: No module named 'MeCab'

Python3を使っている可能性がある
Python2じゃないと今のところうまくいかない

$ python --version
Python 3.4.3