質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.41%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

7501閲覧

lightgbmのインポートにおけるエラーについて

mb-

総合スコア11

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/01/31 16:53

編集2022/02/04 15:41

pipを使用してlightgbmをインストールし、vscodeにて使用しようとしたところ、

python

1import lightgbm 23OSError: 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

〜〜〜追記終了〜〜〜〜
この場合、どうすればエラーを解消できますでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2022/02/01 00:30

/usr/local/opt/libomp/lib/libomp.dylib が存在するかは確認していませんか? brew info libomp でインストールされている箇所が分かります。質問に追記してはどうでしょうか。
mb-

2022/02/01 13:51

ご指摘ありがとうございます。 質問に追記いたしました。
jbpb0

2022/02/03 10:09 編集

質問者さん > /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」がありそうな気がします
mb-

2022/02/03 13:17

ありがとうございます。 追記いたしました。
jbpb0

2022/02/04 02:18 編集

/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
mb-

2022/02/04 15:42

さらなるご教示ありがとうございます。 修正を行いました。
quickquip

2022/02/05 00:19

一応 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を持っていなくて、(特に後者に関して)具体的な手順や検証はできないので回答ではなくてここの欄に書かせてもらいました。
mb-

2022/02/05 14:42

色々とご教示いただきありがとうございます。 M1Macではうまくいかない(lightgbmが対応していない?)ことを初めて知りました。 ビルド等についてはまだまだ不慣れでよくわからないのですが、調べながら進めようと思います。 ありがとうございました。
jbpb0

2022/02/05 23:22 編集

> /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を使うことができます
mb-

2022/02/28 07:53

jbpb0様 ご指摘ありがとうございます。 だいぶ前にご指摘いただいたにも拘らず、お返事が遅くなってしまい申し訳ございません。 諸事情で数日は試してみることが出来ませんので、試せるようになったら試してみようと思います。
guest

回答1

0

ベストアンサー

参考
【M1 Pro/Max対応】M1 Mac環境構築ベストプラクティス
の「手順」の「Python環境構築」の「各種ライブラリのインストール」

投稿2022/02/27 11:09

jbpb0

総合スコア7653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mb-

2022/03/03 12:21

ご教示ありがとうございました。 miniforgeをインストールする方法にて解決いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.41%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問