案情经过
这两天差点儿被XGBoost和LightGBM(其实是卡在Homebrew的安装)搞疯哈哈哈。因为要用XGBoost和LightGBM两个机器学习算法的包,所以尝试在jupyter notebook进行安装。
在一个月不黑风不高的中午,我一如既往噼里啪啦面带微笑游刃有余地打下了如下两行安装指令:
pip install xgboost
pip install lightgbm
然后轻松得到了安装完成可能需要重启kernal的指示(如下图)
轻点鼠标等待重启之后,我施施然打下了两行导入包的指令:
from lightgbm import LGBMClassifier
from xgboost import XGBClassifier
结果猝不及防地报错了:
OSError: dlopen(/Users/user/anaconda3/lib/python3.7/site-packages/lightgbm/lib_lightgbm.so, 6): Library not loaded: /usr/local/opt/libomp/lib/libomp.dylib
Referenced from: /Users/user/anaconda3/lib/python3.7/site-packages/lightgbm/lib_lightgbm.so
Reason: image not found
简单查了一下发现大部分的说法是因为没有安装gcc编译器或者是版本没有更新,但是我的报错上面并没有提到gcc。我抱着迷惑的心情又去查了半天,发现高于2.2.1版本的包已经不需要安装gcc了,但是需要安装OpenMP库,从而让LightGBM包使用Apple Clang(Xcode_8.3.3)进行编译。那这个库怎么安装嘞?很简单, 只需要在终端输入短短三个单词的代码:
brew install libomp
可是brew是个啥?我试探性地悄咪咪地在终端输入了一下,害,果然不行。我乖乖去查,发现需要下载Homebrew。久仰大名啊原来是它!入股绝对不亏,我果断进入Homebrew官网把下载地址复制粘贴在终端里,轻点运行,简直行云流水一气呵成。
我端坐在电脑面前,微笑地啃着薯泥面包盯着屏幕。没成想,...a few moments later...屏幕赫然出现:
curl: (7) Failed to connect to raw.githubusercontent.com port 443: Operation timed out
咋回事儿呢?我定睛一看,嗷原来是timed out, 敢情网不好呗,重新连一下就行。我熟练地断网联网又试了一遍,还是不行……
这可咋办?果断GG一下,原来是DNS污染的问题,只需要下载一个switchhosts就好(参考资料1)。下载好之后在这个长得像文本编辑器的页面新建文件在里面复制输入如下几个地址并进行激活即可。
199.232.68.133 raw.githubusercontent.com
199.232.68.133 user-images.githubusercontent.com
199.232.68.133 avatars2.githubusercontent.com
199.232.68.133 avatars1.githubusercontent.com
然后我信心满满地重新运行,成功开始运行了!但是我的喜悦没有保持多久,又有一个问题:
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
好像还是网的问题……按照大家的方法我反复开关虚拟网关,关掉所有proxy,开着switchhost和不开都试了……甚至试了下载brewinstall.sh文件到本地进行安装,都不行……
直到某个时刻,屏幕开始滚动tag的名字,在我以为要成功的时候,它来了。bug它戴着崭新的面具走来了:
Failed during git fetch --force --tags origin
我耐着性子又查,发现应该是之前安装到一半没有完成的包的原因……所以只好:
rm -R usr/local/Homebrew
删除完成,一身轻松,终于又回到了第一个bug!我裂开了@@
终于,在尝试了无数个办法之后,我发现了中科大镜像这个好东西!(参考资料2,感谢阿畅救我于水火~)只是原文中的链接因为Homebrew官方废弃了Ruby安装脚本已经失效了,我把更新过安装命令的po在这里:
/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"
之后只要输入密码就可以啦!还有贴心的安装提示。最好一定要一直开着虚拟网关,没有虚拟网关我试过也是不行的。
终于搞定了Homebrew!剩下就是!
brew install libomp
之后重新安装,就完美解决了!就此,历时一天一夜,我终于爬出这个巨坑,成功上岸。顺便一提,我的电脑系统是MacOS Mojave。希望对遇到同样问题的小可爱有帮助。
总结一下
1.安装Homebrew
在终端输入如下命令
/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"
2.安装libomp
在终端输入
brew install libomp
3.安装xgboost和lightgbm包并调用
pip install xgboost
pip install lightgbm
from lightgbm import LGBMClassifier
from xgboost import XGBClassifier
完成!
参考资料:
1.https://blog.csdn.net/i_CodeBoy/article/details/107386756
2.https://www.jianshu.com/p/c8d998903a6a