Python
Windows
mecab

Windows環境でのMeCab(Python)のインストール

More than 1 year has passed since last update.

はじめに

自然言語処理を学ぼうと思い、PythonにMeCabをインストールしようと考える人は多くいると思う。
MacやLinux環境では比較的簡単に(HomeBrewやapt-getを使用して)インストールすることが可能だが、Windows環境では一筋縄ではいかない。(現に2,3日ハマった)
多くの先人達がブログの記事にしているが、個人によって環境は異なるので、私がインストールに成功した方法を記事にしたいと思う。

インストール(に試して成功した)環境

OS:Windows10, Windows7
Pythonの環境:Anaconda3系

先にダウンロードしておくべきもの

https://www.visualstudio.com/vs/older-downloads/
VS2015 Community
(私の手元ではVS2017だと失敗した)

http://taku910.github.io/mecab/
mecab-0.996.exe
mecab-python-0.996.zip

http://neu101.seesaa.net/article/272153413.html
mecab-python-0.993.win-build.zip

導入手順

1. まずはじめにMeCabをインストールする

mecab-0.996.exeを起動し、インストールする

※インストールする際に文字コードをutf-8にしておく

2. ダウンロードしておいたmecab-python-0.996.zipを解凍する

解凍して作成されたmecab-python-0.996フォルダ内のsetup.pyを編集する

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"))
            ])

MeCabのインストール先によって一部(include_dirs, library_dirs)異なるが、デフォルトから変更していない限りは以下でよい。

setup.py(修正後)
#!/usr/bin/env python

from distutils.core import setup, Extension

setup(name = "mecab-python",
    version = '0.996',
    py_modules=["MeCab"],
    ext_modules = [
        Extension("_MeCab",
            ["MeCab_wrap.cxx",],
            include_dirs=[r'C:\Program Files (x86)\MeCab\sdk'],
            library_dirs=[r'C:\Program Files (x86)\MeCab\sdk'],
            libraries=['libmecab'])
            ])

3. VS2015 Communityをインストールする

インストールする際に必ずVC++にチェックを入れる

4. Pythonがビルドされた環境を確認する

from distutils.msvc9compiler import *
get_build_version()

14.0と出力されればOK

5. レジストリを書き換える

スタート/検索/"regedit"を開き、
値を以下の場所に書き込む

キー名: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\(Python の MSVC のバージョン)\Setup\VC 
値名:ProductDir 
値:(現在使っている Visual Studio の VC フォルダへのパス)

Ex.Python3.5を使っていて、Vs Community2015を入れたので次のようになる
キー名: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\Setup\VC 
値名:ProductDir 
値:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC

6. mecab.hを編集する

C:\Program Files(x86)\MeCab\sdk\mecab.hの775行目付近
管理者権限で実行する必要あり

/**
 * Lattice class
 */
class MECAB_DLL_CLASS_EXTERN Lattice {
public:

  virtual void set_result(const char *str)        = 0; //この1行を追加

  /**
   * Clear all internal lattice data.
   */
  virtual void clear()              = 0;

7. mecab-python-0.996に戻りbuildする

mecab-python-0.996フォルダ内で以下を実行すると

python setup.py build
error: command '"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\link.exe"' failed with exit status 1120

のようなエラーが出力される

8. mecab-python-0.933.win-build.zipを解凍し、ファイルを移動する

ダウンロードしておいたファイルを解凍し、mecab-python-0.933.win-buildフォルダ内の
libmecab.dllとlibmecab.lib
をmecab-python-0.966に移動する

9. mecab-python-0.966フォルダ内でコマンドを実行する

python setup.py build
python setup.py install

これで、mecab-python-0.966フォルダ内でMeCabをimport出来るようになった

10. MeCabを別ディレクトリからimportする方法

実行環境によってファイルのコピーする先が異なる

anaconda3を使用している場合

\Anaconda3\Lib\site-package
にmecab-python-0.996にあるlibmecab.dllにコピーする。

とても参考になったURL

http://baito1024.blog.jp/archives/10201616.html
http://y-mattu.hatenablog.com/entry/2016/01/06/030929