python for Mac相关文件安装

python比较好用的开发者环境是anaconda,但是anaconda仅仅可以支持基础包比如 sk-learn, numpy,scipy等,用到高级算法时候就需要自己安装。 下面是我在使用xgboost时遇到的问题:

1. jupyter 里 import xgboost 出错,于是在 terminal里 pip xbgoost, 提示成功,但是回到jupyter里仍然无法使用。

python for Mac相关文件安装

放大报错日志部分,报错主要在于libxgboost.dylib包load失败,下边分析了2条可能的原因:

未安装OpenMP
OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C、C++和Fortran。OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的并行程序设计。

Python版本和OS系统版本不一致

 报错原因分析
Xgboost模型本身支持多线程运行,即用多个cpu线程进行训练;

但是,默认的apple clang编译器不支持openmp,因此使用默认编译器将禁用多线程。

解决方案
安装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)"  

 

这个过程非常漫长………………………………………………前两次基本下载到14%就失败里,知道第三次用了3个小时才下载完成。

# 2. 使用homebrew安装最高版本的GCC # 官方文档要求只有最新的gcc版本才能使xgboost支持多线程 brew install [email protected]

下载gcc的过程也非常漫长,大概2个小时。

2.2 源代码安装xgboost
下载xgboost源码
git clone --recursive https://github.com/dmlc/xgboost

这个下载还算可以,20分钟左右。


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 .. 

执行到这里,提示 cmake not found the command, 于是又开始安装 cmake 

从 http://cmake.org 下载 cmake for Mac。 https://cmake.org/download/ 下载时间也很慢,1小时左右。

我是下载的CMake的dmg文件,图形界面安装,但安装完后在命令行中运行不了cmake命令,需要将cmake命令添加到环境变量中 
打开 home 目录下的 .bash_profile 文件加入下面两句,保存修改即可。

# Add Cmake Root to Path
export CMAKE_ROOT=/Applications/CMake.app/Contents/bin/
export PATH=$CMAKE_ROOT:$PATH

python for Mac相关文件安装

python for Mac相关文件安装

python for Mac相关文件安装

# 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,无报错!安装成功!