こんにちは、最近本家LightGBMに2つほど機能追加を実装して、PRが採用された1ので喜んでいる@kenmatsu4です。
Git管理されたLightGBMのコードを編集して実行させたいとき、 Forkした自分のlightGBMのpythonコードを直接参照して欲しいのでそのための設定です。
何もしないとpipやcondaでインストールした先のpythonコードを参照してしまうので、その向き先を変えます。自分のカスタムコードをGit管理しないのであれば直接site-packages
配下のlightgbm
にある.pyコードを直接書き換えてしまえばいいのですが、Git管理するのであればこの方法が自分はいいと思っています。
前提条件
- すでに動作するLightGBMがインストール済み(ビルド済みオブジェクトを参照するので)
- MacOS High Sierra 10.13.6(17G3025)で試しています。(他の環境でもそんなに変わらないはず)
- Anacondaで試しています(が、別な環境でもパスだけ注意すれば多分できる)
- Pythonコードのカスタマイズが対象です。(C++でIDEをうまく使う方法誰か教えてください!)
手順
- https://github.com/Microsoft/LightGBM.git をForkして自分のアカウントにLightGBMを持ってくる。
- git cloneでForkしたソースコード一式をダウンロード。(僕の場合は
git clone https://github.com/matsuken92/LightGBM.git
を実行) -
sys.path
からいま参照されているsite-packages
の場所を探してインストール済みのlightgbm
フォルダを特定 - 3.で見つけた
lightgbm
フォルダにあるlib_lightgbm.so
を<cloneしたLightGBMのパス>/python-package
配下にコピー
Notebookコード
以下Jupyter Notebookでの利用を想定しており、1つの区切りが1つのboxをイメージしています。
import sys
# customしたライブラリを変更した時にimportするたびにリロードしてくれるように設定する。
%load_ext autoreload
%autoreload 2
custom_lgb = "<cloneしたLightGBMのパス>"
# Pythonが読み込むパスをsys.pathの先頭に追加
sys.path = [f"{custom_lgb}/python-package/"] + sys.path
import lightgbm as lgb
これだけです!
例えば<cloneしたLightGBMのパス>/python-package/__init__.py
にprint文を入れるとちゃんと表示されることが確認できます。
独自LightGBMにしてKaggleでライバルに差をつけよう!w