windowsにpythonのxgboostを入れてみた話
xgboostのpythonをwindowsに入れようとして 引っかかった話
こいついっつも(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である。
そのため、うまくいかない。
ちなみにこれに直しても、ファイルが作れないとエラーが出る。
windowsではmakeは別名の動作が入っている場合がある。
これはいけないので、一度makeを上書きしてやる。
doskey make = mingw32-make
これで
make -j4
で排出されるエラーが減るはずだ。
また、
-p
についてエラーが出た。
これについては、Makefileのなかの記述が
mkdir -p
となっているせいである。
しかし最後まで取れなかったのが、
build.logger.o
がターゲットにできないというエラー。Makefileの記述を見てもわからなかった。
@make だから、配列入れてるのか……?
そもそもCとかC++は使わない人なんですよ。
ここから解決方法。
libxgboost.dll がないなら、コンパイル済みのをとってくればいいじゃない!!
※xgboostの方法でも書かれてる方法。
とりあえず、git clone まで終わらせておこう。
ここからlibxgboost.dlをとってくる。
これを該当箇所に置いてやれば、pip install が通るようになる。
やったぜ。
まぁた根本の解明ができなかったよ……。
ところで、mxnetもxgboostもそれなりに前にやったことなんだけど、改めてみたらアホやってるなあ、としみじみ。
もうすぐ二年目ですけれども、もうちっとなんとかなりたいっすね。
目標曖昧すぎてあれだけど。あれってなんだ。
pythonのmxnetをwindowsにインストールする話
mxnetのpythonをwindowsに入れようとして引っかかった話
こいついっつも(ry
AWSにmxnet採用だそうで。
mxnet入れてみましょうか。
Windows10
Python2.7
で行います。
CPUオンリー。
・引っかかったパターン1
<方法>
を見ながら、windowsのpre-installパッケージをダウンロード。
dllを使ってパス入れたりなんなり。
ダウンロードしたフォルダ内へ
cd python
で"日付_win10_x64_cpu"のなかのpythonフォルダに。
python setup.py install
でmoduleどーん。
<結果>
最初はlibinfoが見つからないから始まる。
いや、あるんですよ。
あるんですよ、libinfo! おもっきし階層内にある!
一応もう一回importしてみると
File "C:\Anaconda2\lib\ctypes\__init__.py", line 365, in __init__
self._handle = _dlopen(self._name, mode)
self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126] 指定されたモジュールが見つかりません。
あ~^^
そうか~^^
・引っかかったパターン2
<方法>
一回すべて削除してから
pre-installまで終わらせた後に、上記をgit clone して、cloneした方のpython/mxnetの中に無理やり
libmxnet.dll
を入れる。
(エラー見ながら入れたんで人によっては違う場所かも)
<結果>
importはうまくいったけれども、model.fit時に
import error 'model' object has no attribute '_sample_uniform'
だっけね。
が、出てしまって一向にできない。
ちなみにimport元の中身は
"""NDArray namespace used to register internal functions"""
のみである。
レジストリ関係なのかな? うまく構成ができていないのかな、と推測。
・成功パターン
<方法>
より、pre-installをダウンロードして解凍する。
置き場所はC直下にした。名前はmxnet。
先に、フォルダ内の
setupenv.cmd
をダブルクリックにて起動。
その後、コマンドラインにて
mxnet/python
へ移動し、
python setup.py install
を行う。
あとはpythonで
import mxnet
<原因>
正直わからない。
いろいろやりすぎた感はある。
最初にpipとかを試してしまったせいかもしれない。
試行錯誤している最中にパスを通しなおしたりしていたためそれか もしれない。
mxnetはドキュメントだったり試してみた結果が少ないので、 これをみてなんとなく原因を探っていただければ幸い。
・追記
大方の敗因がパスであることが判明しました。
なんかこう、唐突に使えなくなったー! やべー! って方は、
setupenv.cmd を起動して作成されるmxnetの環境変数をコピーして、PATHに書き込むとうまくいくようになると思います。
お試しあれー
Scipyインストールで引っかかった話
Scipyインストールで引っかかった話
こいついっつも引っかかってんな(´・ω・`)
Pythonは3.5.1をAnaconda2のpyenvにて使っている状態です。
ちなみにWindows10.
Scipyが必要になったので、pip install したら盛大に引っかかった。
やべー、エラーメッセージ長えー
調べるとどうやらpipくんでは無理な模様。
と、いうわけでwheelを利用していれました。
pip install wheel
※自分とこでは入ってた
で、
にアクセスして、numpyとscipyのwhlをダウンロードします。
もし、numpy入っててもMKLのじゃないと、NUMPY-MKLがないぞ、ってインポートscipyしたときに怒られるので、一緒に入れます。
ちょっと重いので数分待ちましょ。
ダウンロードしたフォルダに移動して、
pip install ダウンロードしたwhl
をすれば無事に入れることができました。
ところでブログの形やら書き方が定まっていないせいで書式がこう……かっこよくない……どうにしかしたい
ubuntuにMariadb入れようとして引っ掛かった話
Ubuntu に MariaDB 入れようとして、いっぱい引っかかった話
お察しの題名(´・ω・`)
Ubuntuは16.04です。
sudo apt-get install mariadb-server
E: Could not get lock /var/lib/dpkg.lock - open
E: Unable to lock the administration directory
を見ながら、/var/lib/dpkg.lock を消してリブートする。
もう一度、sudo apt-get install mariadb-server すると、入ります。
が、この後も一筋縄ではいかない。
よーし、Mariadb使うぜ、ひゃっふー
mysql -u root
……(´・ω・`)
sudo mysql -u root で入ってから
を見ながらパスワードを変えていきます。
権限与え与え。
ちなみに、 この前の部分でそもそもソケットがないから無理ですぅ、 と言われることがある。
解決するには
を見ながら、新たにソケット用のファイルを作ってやればいい。
Do not touch なファイルに手を加えることにドキドキしながら終えれば、 sudoを使わずともはいれるようになる。
Mysqldbを入れてみる。
MySQL-Pythonが通らなかったときのメモ。
ちなみにWindows10、Pythonは2.7だったはず。
そうだ、Mysqldbを入れよう。
さっそくpip install......!
引っかかった(´・ω・`)
どうやら、VisualC++とやらが必要なようで。
あるはずじゃ? と見に行ったら、9.0だけが絶妙になかった(´・ω・`)マジ カヨ
というわけで、
IDEついでにほしいよー、って人はほかで調べてね。
よっし、ダウンロード終わった!
これでいけるぜ、pip install MyS.....!
引っかかった(´・ω・`)
'config-win.h': No such file or directory
を参照するに、コネクターが足りないらしい。
とりあえず、最新版だとだめらしいので、
から、6.0.2をインストール
よっしゃ、これで!
引っかかる(´・ω・`)
同じエラーが出てきた。
どうやらコネクターのインストール場所が悪かったらしい。
そしてようやく行けました(`・ω・´)