首先奉上xgboost官方文档python安装详细步骤地址,本文以此为基础。
1. 为什么Python直接使用pip3安装会报错?
1.1 使用pip3安装xgboost
如下,直接使用装包工具pip3 install xgboost在python中安装xgboost
pip3 install xgboost
1.2 报错
运行包含训练xgboost模型的代码,报错如下图。
放大报错日志部分,报错主要在于libxgboost.dylib包load失败,下边分析了2条可能的原因:
-
未安装OpenMP
OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C、C++和Fortran。OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的并行程序设计。 -
Python版本和OS系统版本不一致
xgboost.core.XGBoostError: XGBoost Library (libxgboost.dylib) could not be loaded.
Likely causes:
* OpenMP runtime is not installed (vcomp140.dll or libgomp-1.dll for Windows, libgomp.so for UNIX-like OSes)
* You are running 32-bit Python on a 64-bit OS
1.3 报错原因分析
-
Xgboost模型本身支持多线程运行,即用多个cpu线程进行训练;
-
但是,默认的apple clang编译器不支持openmp,因此使用默认编译器将禁用多线程。
1.4 解决方案
安装openMP来支持xgboost多线程运行。
2. 安装基于GCC的openMP
2.1 安装最新版本GCC
mac在安装GCC之前,首先检查是否安装homebrew,若没有则先安装homebrew。
# 1. 检查是否安装了homebrew
brew list # 列出brew已安装的包,若未列出,则未安装homebrew
# 安装homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# 2. 使用homebrew安装最高版本的GCC
# 官方文档要求只有最新的gcc版本才能使xgboost支持多线程
brew install gcc@8
2.2 源代码安装xgboost
- 下载xgboost源码
git clone --recursive https://github.com/dmlc/xgboost
- build xgboost
# 2.1 非常重要的一步!将路径切换到xgboost文件夹下,否则cmake因路径原因报错
cd xgboost
# 2.2 在xgboost文件夹下新建build文件夹
mkdir build
# 2.3 切换到build文件夹下
cd build
# 2.4 调用CMake,确保选择了homebrew安装的GCC版本。
CC=gcc-8 CXX=g++-8 cmake ..
# 2.5 build XGBOOST
make -j4
- 安装xgboost
# 这里的python-package为刚刚xgboost的下载路径
cd python-package; sudo python3 setup.py install
cd /usr/local/bin/xgboost/python-package;
3. 验证xgboost是否已安装
在终端下输入 Python3,导入xgboost,无报错!安装成功!
完结撒花!