pipを使用してlightgbmをインストールし、vscodeにて使用しようとしたところ、
python
1import lightgbm 2↓ 3OSError: dlopen(/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/lightgbm/lib_lightgbm.so, 0x0006): Library not loaded: /usr/local/opt/libomp/lib/libomp.dylib 4 Referenced from: /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/lightgbm/lib_lightgbm.so 5 Reason: tried: '/usr/local/opt/libomp/lib/libomp.dylib' (no such file), '/usr/lib/libomp.dylib' (no such file)
というエラーが出ました。
解決方法を調べたところ、libompをインストールすればいいと言っているサイトやlightgbmを再インストールすればいいといっているサイトがありましたので、それらを試しましたが上手くいきませんでした。
brew instal libomp python3 -m pip install lightgbm
上手くいった事例と当方の事例を比較するとエラーメッセージのReason以下の部分が異なることがわかりました。
上手くいった事例:image not found
当方のメッセージ:tried(上記の通り)
ターミナルでbrew listを実行したところ、libompの表示がございましたので、インストールはされているはずなのですが、エラーメッセージをみるとno such fileとなっております。
brew info libompと打ち込んで実行すると以下通りの表示が出ました。
libomp: stable 13.0.0 (bottled) LLVM's OpenMP runtime library https://openmp.llvm.org/ /opt/homebrew/Cellar/libomp/13.0.0 (9 files, 1.6MB) * Poured from bottle on 2022-02-01 at 01:01:21 From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/libomp.rb License: MIT ==> Dependencies Build: cmake ✔ ==> Analytics
〜〜〜2/3追記〜〜〜
ターミナルで以下のことを実行したところ、
ls -l /usr/local/opt/libomp/lib/libomp.dylib
このような結果となりました
ls: /usr/local/opt/libomp/lib/libomp.dylib: No such file or directory
〜〜〜追記終了〜〜〜
〜〜〜2/4追記〜〜〜
ターミナルで以下のことを実行したところ、
file /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/lightgbm/lib_lightgbm.so
このような結果となりました。
/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/lightgbm/lib_lightgbm.so: Mach-O 64-bit dynamically linked shared library x86_64
また、以下を試すと
du -a /opt/homebrew/Cellar/libomp/13.0.0 | grep libomp.dylib
このような結果になったので、
1264 /opt/homebrew/Cellar/libomp/13.0.0/lib/libomp.dylib
以下の通り実行すると、
file /opt/homebrew/Cellar/libomp/13.0.0/lib/libomp.dylib
以下の結果となりました。
/opt/homebrew/Cellar/libomp/13.0.0/lib/libomp.dylib: Mach-O 64-bit dynamically linked shared library arm64
〜〜〜追記終了〜〜〜〜
この場合、どうすればエラーを解消できますでしょうか。
/usr/local/opt/libomp/lib/libomp.dylib が存在するかは確認していませんか?
brew info libomp でインストールされている箇所が分かります。質問に追記してはどうでしょうか。
ご指摘ありがとうございます。
質問に追記いたしました。
質問者さん
> /usr/local/opt/libomp/lib/libomp.dylib が存在するかは確認していませんか?
上記を確認した結果を質問に追記してください
ターミナルで下記を実行したら分かります
ls -l /usr/local/opt/libomp/lib/libomp.dylib
brew info libomp
を実行した結果で
/opt/homebrew/Cellar/libomp/13.0.0 (9 files, 1.6MB) *
と表示されてるということは、
/usr/local/opt/...
ではなくて、
/opt/homebrew/...
のどこかに「libomp.dylib」がありそうな気がします
ありがとうございます。
追記いたしました。
/opt/homebrew/...
にあるのは、たしかm1(arm)用のだったと思います
(Universalかも)
入ってるlightgbmは何用のでしょうか?
下記を実行したら、どのように表示されますか?
file /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/lightgbm/lib_lightgbm.so
下記を実行したら「libomp.dylib」がある場所が分かるので、そちらも同様に「fileコマンド」で調べてみてください
du -a /opt/homebrew/Cellar/libomp/13.0.0 | grep libomp.dylib
さらなるご教示ありがとうございます。
修正を行いました。
一応
file /Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9
してPythonがIntel向けのバイナリかUniversalバイナリか調べて追記するといいかと思います。
https://pypi.org/project/lightgbm/#files
を見ると(Pythonの)lightgbmライブラリはM1向けのバイナリを提供していません。
したがって
homebrewからPythonまで全てIntelバイナリで揃える
か
Pythonのlightgbmライブラリをソースからビルドする
かの選択になると思います。
私はM1 Macを持っていなくて、(特に後者に関して)具体的な手順や検証はできないので回答ではなくてここの欄に書かせてもらいました。
色々とご教示いただきありがとうございます。
M1Macではうまくいかない(lightgbmが対応していない?)ことを初めて知りました。
ビルド等についてはまだまだ不慣れでよくわからないのですが、調べながら進めようと思います。
ありがとうございました。
> /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/lightgbm/lib_lightgbm.so: Mach-O 64-bit dynamically linked shared library x86_64
lightgbmはインテル(x86_64)用をインストールしてますが、
> /opt/homebrew/Cellar/libomp/13.0.0/lib/libomp.dylib: Mach-O 64-bit dynamically linked shared library arm64
libompはm1(arm)用をインストールしてますね
インテル用のライブラリとm1用のライブラリを組み合わせて使うことはできません
quickquipさんが
> homebrewからPythonまで全てIntelバイナリで揃える
と書いてるように、m1 Macでもインテル用のPythonやライブラリを使うことはできるので、インテル用のHomebrewをインストールして、それを使って(インテル用の)libompをインストールしたら、(インストール済みのインテル用の)lightgbmがエラー出ずに動くのではないですかね
https://zenn.dev/_lambda314/articles/63b851221a7016
あるいは、
https://qiita.com/c60evaporator/items/aef6cc1581d2c4676504
の「手順」の「Python環境構築」に書いてあるように、Miniforgeを使えば、自分でビルドしなくてもm1用のlightgbmを使うことができます
jbpb0様
ご指摘ありがとうございます。
だいぶ前にご指摘いただいたにも拘らず、お返事が遅くなってしまい申し訳ございません。
諸事情で数日は試してみることが出来ませんので、試せるようになったら試してみようと思います。
回答1件
あなたの回答
tips
プレビュー