環境
MacOS: Catalina バージョン10.15.2
Python: 3.7.5
問題
言語処理100本ノック 2015の 5章 係り受け解析 のためにCaboChaのpythonモジュールcabocha-python
をインストールしようとしました。
HomebrewからCaboChaをインストールすることはできたのですが、その後のpip install cabocha-python
で以下のようなエラーが出てインストールできませんでした。
% pip install cabocha-python
Collecting cabocha-python
Downloading https://files.pythonhosted.org/packages/f6/d7/9d65ff2cf49f34ef8313c2fe6fe2f8b0a0e165ea385e6ef6e20b4538560c/cabocha-python-0.69.1.tar.gz (49kB)
|████████████████████████████████| 51kB 4.9MB/s
Building wheels for collected packages: cabocha-python
Building wheel for cabocha-python (setup.py) ... error
ERROR: Command errored out with exit status 1:
command: /Users/usr/Documents/training/nlp100/.venv/bin/python3.7 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/9p/xbrbn3tj3nv9m0s8_zxnpq8m0000gn/T/pip-install-9gvea7po/cabocha-python/setup.py'"'"'; __file__='"'"'/private/var/folders/9p/xbrbn3tj3nv9m0s8_zxnpq8m0000gn/T/pip-install-9gvea7po/cabocha-python/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/9p/xbrbn3tj3nv9m0s8_zxnpq8m0000gn/T/pip-wheel-o5qn4gsq --python-tag cp37
cwd: /private/var/folders/9p/xbrbn3tj3nv9m0s8_zxnpq8m0000gn/T/pip-install-9gvea7po/cabocha-python/
Complete output (234 lines):
running bdist_wheel
running build
running build_py
creating build
creating build/lib.macosx-10.15-x86_64-3.7
copying CaboCha.py -> build/lib.macosx-10.15-x86_64-3.7
warning: build_py: byte-compiling is disabled, skipping.
running build_ext
building '_CaboCha' extension
creating build/temp.macosx-10.15-x86_64-3.7
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/cabocha/0.69/include -I/Users/kenji.mineta/Documents/training/nlp100/.venv/include/python3.7m -I/Users/kenji.mineta/Documents/training/nlp100/.venv/include/python3.7m -I/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/include/python3.7m -c CaboCha_wrap.cxx -o build/temp.macosx-10.15-x86_64-3.7/CaboCha_wrap.o
CaboCha_wrap.cxx:3512:18: warning: exception of type 'const char *' will be caught by earlier handler [-Wexceptions]
catch (const char *e) {
^
〜〜〜〜〜中略〜〜〜〜〜
36 warnings generated.
warning: no library file corresponding to '-L/usr/local/Cellar/mecab/0.996/lib' found (skipping)
clang++ -bundle -undefined dynamic_lookup -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk build/temp.macosx-10.15-x86_64-3.7/CaboCha_wrap.o -L/usr/local/Cellar/cabocha/0.69/lib -lcabocha -lcrfpp -lmecab -liconv -lmecab -lstdc++ -o build/lib.macosx-10.15-x86_64-3.7/_CaboCha.cpython-37m-darwin.so
ld: library not found for -lcrfpp
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command 'clang++' failed with exit status 1
----------------------------------------
ERROR: Failed building wheel for cabocha-python
結論
公式のGoogle DriveからダウンロードしてきたCaboChaをmake install
する。
https://drive.google.com/drive/folders/0B4y35FiV1wh7cGRCUUJHVTNJRnM
% ./configure --with-mecab-config=`which mecab-config` --with-charset=UTF8
% make
% make check
% sudo make install
その後、pip install
することでインストールできました。
% pip install cabocha-python
Collecting cabocha-python
Downloading https://files.pythonhosted.org/packages/f6/d7/9d65ff2cf49f34ef8313c2fe6fe2f8b0a0e165ea385e6ef6e20b4538560c/cabocha-python-0.69.1.tar.gz (49kB)
|████████████████████████████████| 51kB 5.0MB/s
Building wheels for collected packages: cabocha-python
Building wheel for cabocha-python (setup.py) ... done
Created wheel for cabocha-python: filename=cabocha_python-0.69.1-cp37-cp37m-macosx_10_15_x86_64.whl size=30510 sha256=d7b78e7b33eff91b2e579f14587c84716559f7974ee746a3d4c9f5cfef49c97e
Stored in directory: /private/var/folders/9p/xbrbn3tj3nv9m0s8_zxnpq8m0000gn/T/pip-ephem-wheel-cache-kzn05_d1/wheels/d4/62/d0/724e685135e5fa3da495d2f54dbe459adc56ffda08e3a01ebb
Successfully built cabocha-python
Installing collected packages: cabocha-python
Successfully installed cabocha-python-0.69.1
%
やったぜ。
MeCabのインストールから整理してみる
※brewコマンドはインストール済みとします。
CaboChaをインストールするには、事前にMeCabやCRF++等をインストールしておく必要があります。
これらのインストールにはbrewを使用しても問題ありませんでした。
MeCabのインストール
% brew install mecab
% brew install mecab-ipadic
CaboChaに必要なモジュールのインストール
% brew install git curl xz
% brew install crf++
CaboChaのインストール
CaboChaをダウンロード
公式のGoogle Driveから最新版のCaboChaをダウンロードしてきます。自分がダウンロードしたのはcabocha-0.69.tar.bz2
でした。
CaboChaをmake install
ダウンロードしたファイルを適当な作業ディレクトリに解凍します。
解凍するとcabocha-0.69
というディレクトリができるので、ターミナルを開いて移動します。
% cd cabocha-0.69
cabocha-0.69
内でmake
コマンドを実行します。
./configure
の引数を忘れないように注意してください(理解はしていませんが…)。
cabocha-0.69 % ./configure --with-mecab-config=`which mecab-config` --with-charset=UTF8
cabocha-0.69 % make
cabocha-0.69 % make check
cabocha-0.69 % sudo make install
CaboChaが動くかどうか確認してみます。
以下のようにターミナル上でcabocha
が実行できればCaboChaのインストールは成功です。
% cabocha
貴社の記者が汽車で帰社した。 ←ここは手入力します。
貴社の-D
記者が---D
汽車で-D
帰社した
EOS
(^cで終了)
cabocha-pythonのインストール
これまでの手順でCaboChaをインストールすることで、PyPIにあるcabocha-pythonをインストールできるようになりました。
% pip install cabocha-python
また、ダウンロードしたcabocha-0.69
内にあるpython/
を使ってインストールすることもできました。
cabocha-0.69 % pip install python/
動作確認
% python
>>> import CaboCha
>>> cp = CaboCha.Parser()
>>> print(cp.parseToString("記者の記者が汽車で帰社した"))
記者の-D
記者が---D
汽車で-D
帰社した
EOS
やったぜ。
エラーの原因について(未解決)
冒頭に載せたエラーは、C++のコンパイラ周りで発生しているようです。
どうやらCommand Line Toolsのバージョンが新しいとうまくいかないらしいです。
参考:【Macメモ】MacのJupyter NotebookでCabochaを動かす
これから行うビルド作業では、CLTのバージョンが9.4である必要があります。
もし、CLTのバージョンはこれより大きなものの場合、Appleダウンロードサイトから、Command Line Tools 9.4をダウンロード・導入するようにして下さい。
しかし、自分の使っているMacOS(Catalina)でCLTのバージョンを下げる方法が分かりません…。
色々見ながら、パスを通してみるなどしたのですが、結局うまくいきませんでした。
所感
いっそのことMeCabからmake install
した方が良いのかもしれませんが、動いたので良しとしました。
(Mac初心者なので、できる限りbrewに任せたい)
同じようなエラーが出た方、原因について詳しい方いましたらコメントで教えていただけると幸いです。
参考にしたページ
【Macメモ】MacのJupyter NotebookでCabochaを動かす
CaboChaで始める係り受け解析
macOS 10.15 CatalinaとXcode 11で/usr/includeが見つからない問題
root権限なしでCaboChaをインストールする.