最近 LightGBM にコントリビューションする機会を得たので、その際に調べたことの備忘録を残しておく。 現時点では、Python 周りの開発環境についてドキュメントは特に見当たらないようだった。 以下は CI 環境のスクリプトやエラーメッセージを読みながら雰囲気で作ったもの。 そのため、あまり信用せずオフィシャルなところは本家のリポジトリで確認してほしい。
使った環境は次のとおり。
$ sw_vers ProductName: Mac OS X ProductVersion: 10.15.5 BuildVersion: 19F101 $ python -V Python 3.7.7
下準備
拡張モジュールやドキュメントのビルドに必要なパッケージをあらかじめインストールしておく。
$ brew install cmake doxygen
そして、ソースコードのリポジトリをチェックアウトする。
$ git clone https://github.com/microsoft/LightGBM.git $ cd LightGBM
Python のテストを通す
今回は手を入れるのが Python binding 部分だったので、ひとまず Python のユニットテストを通す必要がある。
まずはテストに必要なパッケージをインストールする。
$ pip install pandas psutil scipy
続いて、Python binding のあるディレクトリに移動する。
$ cd LightGBM/python-package
LightGBM の本体といえる拡張モジュール (lib_lightgbm.so) をビルドした上で、開発モードで LightGBM をインストールする。
$ python setup.py bdist develop
ユニットテストのあるディレクトリに移動する。
$ cd ../tests/python_package_test
テストランナーを実行して、ユニットテストがパスすることを確認する。
$ python -m unittest discover -v ... test_stacking_regressor (test_sklearn.TestSklearn) ... ok test_xendcg (test_sklearn.TestSklearn) ... ok ---------------------------------------------------------------------- Ran 107 tests in 146.355s OK (skipped=5)
ドキュメントをビルドする
続いて、API に修正があった場合にはドキュメントにも手を入れる必要がある。 LightGBM では Sphinx を使ってドキュメントを書いている。
まずはドキュメントのディレクトリに移動する。
$ cd ../../docs/
ドキュメントをビルドするのに必要なパッケージをインストールする。
$ pip install -r requirements.txt
あとは通常の Sphinx の手順でターゲットを指定してドキュメントをビルドする。
$ make html
うまくいけば _build
ディレクトリ以下に成果物ができるので修正した内容を確認する。
$ ls _build/html Advanced-Topics.html Python-Intro.html C-API.html Quick-Start.html Development-Guide.html README.html Experiments.html _images FAQ.html _modules Features.html _sources GPU-Performance.html _static GPU-Targets.html gcc-Tips.html GPU-Tutorial.html genindex.html GPU-Windows.html index.html Installation-Guide.html objects.inv Parallel-Learning-Guide.html pythonapi Parameters-Tuning.html search.html Parameters.html searchindex.js Python-API.html
いじょう。