[[ノート/ハックメモ]]

* Win 10(or 7) 64ビット下でPython3でMeCabを使いたい [#tb78c31c]

問題は、
-MeCabのWin用バイナリを64ビットにすること
-MeCab-Pythonバインディングを上記Winバイナリに合わせること


参照リンク
-[[準備2:mecab+デフォルト辞書 (updated!):https://sites.google.com/site/keiopython2017/home/zhun-bei2-mecab-ci-shu]] 講習会向けにバイナリを配布している人のページ。Anaconda下で64ビット対応版が使えるらしい。

-[[Windows 7 64bit に MeCab (和布蕪) と Python のバインディングを導入 (2016/08/18):https://qiita.com/tobesan/items/6b6f3a025fdd177ef52a]] 自分でMeCab自体をコンパイルする場合のやり方。

-[[MeCabをWindows 10 (64-bit)上のPythonで使う:http://hassiweb-programming.blogspot.jp/2017/08/mecabwindows-10-64-bitpython.html]] 32ビット版MeCabをインストールした上で、Visual Studio 2015でモジュールを64ビット対応に再コンパイル。更にPython-Mecabモジュールを(同じ環境で)コンパイル。

-[[MeCabを「Windows10;Python3.5(64bit)」に入れる:https://qiita.com/o__mura/items/31fb75df6183199e95b6]] Visual Studio 2015でコンパイルする

-[[Windows で pip で mecab-python をいれる:https://qiita.com/yukinoi/items/990b6933d9f21ba0fb43]] 上記をやったものを配布している雰囲気。残念ながら32ビット。

-[[Windows環境でのMeCab(Python)のインストール:https://qiita.com/satetsu007/items/187e5a3f0ed0b898b152]] Visual Studio 2015でmecab-python-0.996を再コンパイル

-[[2:mecab-python 自然言語処理@Python-Win8:http://baito1024.blog.jp/archives/10201616.html]] mecab-pythonが64ビット環境からうまく呼び出すように、これをsetup.pyでコンパイルする時にMS VS-Cコンパイラが使えるようにするだけ(基本的に、だが)という感じ。

**とにかく動かした経緯(2018-03-15) [#ld299f8c]
環境は
-Win10 Pro
-Pythonは3.6だが、WinPythonのUSB用(32ビット版)
--E:\WinPython-32bit-3.6.2.0Qt5
-MeCabは公式からダウンロードしたWindows用32ビット版
--C:\Program Files (x86)\MeCab(デフォルトの場所)へインストール
-mecab-pythonは公式からダウンロードしたソース
--E:\WinPython-32b9t-3.6.2.0Qt5\notebooks.mecab-python-0.996へ展開済み

手続きは次の通り。
-Visual Studio 2015 Communityをインストール~
ポイントは、mecab-pythonをインストールするときにC++コードをコンパイル・リンクするが、リンク時にmecab本体との(使用したコンパイラの)整合性が必要らしい。それでVS2015(VC++バージョン14.0)が欲しいので、VS2015が必要。~
黙ってVisual Studioをダウンロードしようとすると、現在のバージョンは2017なのだがこれを使うとリンク時にエラーが出るみたいだ。そこで、[[過去のバージョン:https://my.visualstudio.com/Downloads?q=visual%20studio%202015&wt.mc_id=o~msft~vscom~older-downloads]](直リンクはうまくいかないみたいで、MSDNのログインが影響するような感じです。Visual Studioのダウンロードページ(2017版のダウンロードが表示される)の最下段の「以前のバージョン」のリンクをたどって2015を探せた。)の頁を探して、ここから2015 Communityをインストールする。~
パスを、C:\Program files (x86)\Microsoft Visual Studio 14.0\VC に張っておく

-mecab.hの編集 (参照:[[Windows環境でのMeCab(Python)のインストール:https://qiita.com/satetsu007/items/187e5a3f0ed0b898b152]]の「6. mecab.hを編集する」。他の情報は別の項で。)~
C:\Program Files (x86)\MeCabにインストールした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;

-mecab-python-0.996のsetup.pyの編集~
mecab-pythonを展開した場所にある、setup.pyを編集。上記の環境ではE:\WinPython-32bit-3.6.2.0Qt5\notebooks\mecab-python-0.996\setup.pyになる。~
編集は、setup.pyがPosix/linux系に依存したコマンドを使ってシステムパラメタを読み出しているが、それがWinでは使えないので、パラメタの値を決め打ちにして書きこんでしまう。#でコメントアウトしてあるのがオリジナル、その直下に変更した行を書込んである。~
 #!/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"),
 	version = '0.996',
 	py_modules=["MeCab"],
 	ext_modules = [
 		Extension("_MeCab",
 			["MeCab_wrap.cxx",],
 			#include_dirs=cmd2("mecab-config --inc-dir"),
 			include_dirs=[r'C:\Program Files (x86)\MeCab\sdk'],
 			#library_dirs=cmd2("mecab-config --libs-only-L"),
 			library_dirs=[r'C:\Program Files (x86)\MeCab\sdk'],
 			#libraries=cmd2("mecab-config --libs-only-l"))
 			libraries=['libmecab'] )
 			])

-2つほどおまじないをしてからpython setup.py installを実行する~
おまじないは[[2:mecab-python 自然言語処理@Python-Win8:http://baito1024.blog.jp/archives/10201616.html]]にあったもの。
--1行目はCOMNTOOLSのVSバージョンの読み替え。~
[[「Unable to find vcvarsall.bat」の対処法:https://www.regentechlog.com/2014/04/13/build-python-package-on-windows/]] にあるように、MSC v.AABBとなっているとき、AA-6がVC++のメジャーバージョン番号なので、AAが19ならVC++ 13、20ならVC++ 14となる。
--2行目は、vcvarsallを実行させる。元の情報ページではバージョンを指定したディレクトリbin\amd64のvcvarsを実行してるが、ここでは全対応版を実行。~
最後に、python setup.py install を実行。この中でbuildしてからinstallする。installするために管理者権限必要。
 SET VS90COMNTOOLS=%VS140COMNTOOLS%
 call "%PROGRAMFILES(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" X64
 python setup.py install

これで、正常にコード生成が終了し、pyd、pyc、install_egg_infoなどが正常に書き込まれれば終了。あとはテストするだけ。

<注意>今回はPythonが32ビットバージョン。


<Python 64だとどうもうまくいかない>

<Mecab 64という話は、ikegami-yukinoさんの64ビットコンパイル済みmecabを使う方法があって、[[windows 10 64bit で python + mecab:https://qiita.com/kuro_hane/items/64e39d5deeb3f876b421]]や、[[64Bit版Windows10でMecabをインストールする方法:https://toolmania.info/post-9815/]]という記事がある。>

<Mecab 64を自分でコンパイルする手順は、[[MeCabをWindows 10 (64-bit)上のPythonで使う :http://hassiweb-programming.blogspot.jp/2017/08/mecabwindows-10-64-bitpython.html]]にある>
<Mecab 64を自分でコンパイルする手順は、[[MeCabをWindows 10 (64-bit)上のPythonで使う :http://hassiweb-programming.blogspot.jp/2017/08/mecabwindows-10-64-bitpython.html]] や [[Windows10/64bit用にMeCabをビルドする:http://blog.livedoor.jp/oyajieng_memo/archives/1768276.html]]にある>

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS