読者です 読者をやめる 読者になる 読者になる

なめくじ文系PG道

文系新卒がなぜかPGになったのでブログをしてみることにした

windowsにpythonのxgboostを入れてみた話

xgboostのpythonwindowsに入れようとして引っかかった話
 
こいついっつも(ry
 
こちらを参考に、git cloneを行った。
少し前のバージョンを選択してサブモジュールもおっけ。
mingw64も入れてPATHも通した。
 
しかしうまくpipで入らない。
libxgboost.dll 
がないという。これには見覚えがある。mxnetだ。
さすがは同じところが出しているモジュール、同じところで引っかかった(´・ω・`)
 
コンパイルができていないということだろう。
そのため、
cd xgboost
cp make/config.mk ./config.mk; make -j4
を行うもうまくいかない。
windowsなので、そもそもcpはcopyだ。
それも同名があるとうまくいかない。面倒だから手動コピーしてもってきた。名前も変えた。
 
それでもうまくいかない。
実は、makeはwindowsではmingw32-makeである。
そのため、うまくいかない。
ちなみにこれに直しても、ファイルが作れないとエラーが出る。
 
おそらくだが、コンパイル用のMakefileの中の記述は「make」のため、手元でやろうともなかでmakeコマンドが使われてしまうのだ。
windowsではmakeは別名の動作が入っている場合がある。
これはいけないので、一度makeを上書きしてやる。
doskey make = mingw32-make
これで
make -j4
で排出されるエラーが減るはずだ。
 
また、
-p
についてエラーが出た。
これについては、Makefileのなかの記述が
mkdir -p
となっているせいである。
この-pのオプション、windowsはなくても動いたはずなので、Makefileの記述を手動で変更します。
 
しかし最後まで取れなかったのが、
build.logger.o
がターゲットにできないというエラー。Makefileの記述を見てもわからなかった。
@make だから、配列入れてるのか……?
そもそもCとかC++は使わない人なんですよ。
 
 
ここから解決方法。
libxgboost.dll がないなら、コンパイル済みのをとってくればいいじゃない!!
※xgboostの方法でも書かれてる方法。
とりあえず、git clone まで終わらせておこう。
 
 
ここからlibxgboost.dlをとってくる。
これを該当箇所に置いてやれば、pip install が通るようになる。
やったぜ。
 
 
まぁた根本の解明ができなかったよ……。
 
 
ところで、mxnetもxgboostもそれなりに前にやったことなんだけど、改めてみたらアホやってるなあ、としみじみ。
もうすぐ二年目ですけれども、もうちっとなんとかなりたいっすね。
目標曖昧すぎてあれだけど。あれってなんだ。