LoginSignup
4
6

More than 3 years have passed since last update.

Mac(Catalina)にcabocha-pythonがインストールできないときの対処法

Last updated at Posted at 2020-01-10

環境

MacOS: Catalina バージョン10.15.2
Python: 3.7.5

問題

言語処理100本ノック 2015の 5章 係り受け解析 のためにCaboChaのpythonモジュールcabocha-pythonをインストールしようとしました。
HomebrewからCaboChaをインストールすることはできたのですが、その後のpip install cabocha-pythonで以下のようなエラーが出てインストールできませんでした。

zsh
% 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

zsh
% ./configure --with-mecab-config=`which mecab-config` --with-charset=UTF8
% make
% make check
% sudo make install

その後、pip installすることでインストールできました。

zsh
% 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のインストール

zsh
% brew install mecab
% brew install mecab-ipadic

CaboChaに必要なモジュールのインストール

zsh
% brew install git curl xz
% brew install crf++

CaboChaのインストール

CaboChaをダウンロード

公式のGoogle Driveから最新版のCaboChaをダウンロードしてきます。自分がダウンロードしたのはcabocha-0.69.tar.bz2でした。

CaboChaをmake install

ダウンロードしたファイルを適当な作業ディレクトリに解凍します。
解凍するとcabocha-0.69というディレクトリができるので、ターミナルを開いて移動します。

zsh
% cd cabocha-0.69

cabocha-0.69内でmakeコマンドを実行します。
./configureの引数を忘れないように注意してください(理解はしていませんが…)。

zsh
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のインストールは成功です。

zsh
% cabocha
貴社の記者が汽車で帰社した。 ←ここは手入力します。
  貴社の-D    
    記者が---D
      汽車で-D
      帰社した
EOS
(^cで終了)

cabocha-pythonのインストール

これまでの手順でCaboChaをインストールすることで、PyPIにあるcabocha-pythonをインストールできるようになりました。

zsh
% pip install cabocha-python

また、ダウンロードしたcabocha-0.69内にあるpython/を使ってインストールすることもできました。

zsh
cabocha-0.69 % pip install python/

動作確認

zsh
% 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をインストールする.

4
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6