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

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

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

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

解決済

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

mb-
mb-

総合スコア11

Python 3.x

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

1回答

0リアクション

0クリップ

2787閲覧

投稿2022/01/31 16:53

編集2022/02/04 15:41

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

python

import lightgbm OSError: 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 Referenced from: /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/lightgbm/lib_lightgbm.so 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

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

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

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

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

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