学習する天然ニューラルネット

主に機械学習に関する覚書や情報の整理。競プロ水色→Kaggle Master→?

またまた、LightGBMのインストールでエラーが出た

事件の発生

LightBGMというライブラリを公式の手順に従ってインストールしようとしたらエラーメッセージが突如現れた。

github.com

これのmacOS Apple Clang(9.0 or higher)に従ってインストを行ったらエラーが出た。

どんなエラーがでたか

インストレイションガイドに従って

brew install --HEAD cmake
brew install libomp
git clone --recursive https://github.com/Microsoft/LightGBM ; cd LightGBM
mkdir build ; cd build
cmake ..
make -j4

ここまでエラーはでなかった。そして

pip install lightgbm

でインストール。いざ、使おうとしたところでエラーが出た。

>>> import lightgbm
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/{ユーザー名}/.pyenv/versions/anaconda3-5.0.0/lib/python3.6/site-packages/lightgbm/__init__.py", line 8, in <module>
中略
OSError: dlopen(/Users/{ユーザー名}/.pyenv/versions/anaconda3-5.0.0/lib/python3.6/site-packages/lightgbm/lib_lightgbm.so, 6): Library not loaded: /usr/local/opt/gcc/lib/gcc/8/libgomp.1.dylib
  Referenced from: /Users/{ユーザー名}/.pyenv/versions/anaconda3-5.0.0/lib/python3.6/site-packages/lightgbm/lib_lightgbm.so
  Reason: image not found

どうやって解決したか

アンインストールしてから再度やってみたりいろいろしたがどうしてもimportができなかったので諦めて他の方法でインストールした。

github.com

こちらのInstallation GuideのmacOS GCC/G++のやり方に従って、インストールした

cd LightGBM #gitからクローンしたディレクトリに入ってください。
rm -r build # 上記の失敗で作ったbuildを消しておきます。

#ここからほぼ上記のリンク通り
brew install cmake
brew install gcc

export CXX=g++-8 CC=gcc-8  # 上記のリンクとは異なり、ここを8に変えておかないとエラーが出ます。
mkdir build ; cd build
cmake ..
make -j4

これで無事にインストールでき、importもできるようになった。

関係あるかわかりませんがpyenvやvirtualenvを使っている場合は、事前にactivateしておくと無難かもしれない。

それでも直らない場合

実は、他のサーバーにインストールしようとしたところまた同じエラーが出てしまった。gcc-7を使ってインストールしたため、

Library not loaded: /usr/local/opt/gcc/lib/gcc/8/libgomp.1.dylib

って怒られるのは当たり前...でも管理者権限がないのでgcc-8をインストールすることもできず。

そこでstack overflowをあさっていたら、

pip install --no-binary :all: lightgbm

でインストールするといいよと記述を見つけた。ので、早速ためしたところ無事importできるようになった。これも一回試すといいかもしれない。

余談

前も別のところでエラー履かれたしスムーズにインストールできるようになってほしい aotamasaki.hatenablog.com

追記

condaを用いているなら、かなり楽にインストールできる

conda install -c conda-forge lightgbm