今天在linux服務器上安裝了xgboost,和python接口,
由於系統版本老舊,着實費了一番周折,裝成后把過程記錄一下。
先按官方文檔上的步驟操作:
git clone --recursive https://github.com/dmlc/xgboost
cd xgboost;
cp make/config.mk ./config.mk
make -j4
編譯報錯,提示找不到c++11
gcc -v 發現系統中gcc版本是4.4.6,版本過低
安裝gcc4.8.5
將config.mk中的:
export CC = gcc export CXX = g++
改成:
export CC = /usr/local/gcc/bin/gcc export CXX = /usr/local/gcc/bin/g++
編譯程序配置指向gcc4.8.5安裝后位置
再次make -j4,編譯成功!
如果想使用python接口,需安裝python程序包,安裝步驟如下:
cd python-package; sudo python setup.py install
安裝失敗,提示缺少scipy,安裝scipy:
sudo pip install scipy
報錯,未裝pip
於是下載pip-18.0.tar.gz,解壓后手動安裝:
sudo python setup.py install
安裝后,pip -v 測試失敗
系統python版本是2.6,看樣子像是python版本與pip-18不兼容。
下載Python-2.7.13.tgz,手動安裝。
執行python2.7:
sudo /usr/local/bin/python2.7 setup.py install
安裝后pip -v 還是失敗,觀察報錯提示,pip還是裝到了python2.6中。
猜測應該是因為沒有將默認python版本升級到2.7,
備份/usr/bin/python:
cd /usr/bin
mv python python.old
再將pyton鏈接到pthon2.7所在位置
ln -s /usr/local/bin/python2.7 python
再次回到pip安裝目錄,
sudo python setup.py install
測試,pip -v 成功。
繼續安裝scipy
安裝成功
回到xgboost/python-package目錄中,繼續安裝python接口:
提示,缺少python-setuptools,看文檔中提到需要裝python-setuptools,就按說明安裝:
sudo apt-get install python-setuptools
提示沒有安裝apt-get (崩潰)
執行命令:
wget https://bootstrap.pypa.io/ez_setup.py
下載ez_setup.py文件
sudo python ez_setup.py
安裝成功。
繼續安裝python-setuptools,安裝成功。
再次嘗試安裝python-package
安裝結束沒有報錯,在python中測試,import xgboost as xgb,失敗。
看提示信息還是像依賴包版本不兼容的樣子。
看到文檔最開頭有對於python的預編譯二進制包,
安裝方式:
pip3 install xgboost
看着像是用python方式安裝xgboost,
以這種方式安裝后,python接口可以直接使用?
死馬當活馬醫,安裝:
由於沒有pip3,只能試試,
pip install xgboost
安裝成功時提示了已裝好適配了最佳的numpy和scipy。
再次嘗試
import xgboost as xgb
成功了。