Mac下安裝lightgbm
1.安裝環境
- 系統
- MacOS Mojave
- 版本10.14.2
- Xcode
- 10.1
$ clang -v
Apple LLVM version 10.0.0 (clang-1000.11.45.5)
Target: x86_64-apple-darwin18.2.0
Thread model: posix
2.安裝錯誤
直接使用命令:
import lightgbm as lgb
使用時直接調用:
import lightgbm as lgb
import lightgbm as lgb
然后在pycharm、notebook中使用時會報錯:
OSError: dlopen(/Usrs/chao/.pyenv/versions/3.6.2/lib/python3.6/site-packages/lightgbm/lib_lightgbm.so, 6): Library not loaded: /Usrs/chao/.../libgomp.1.dylib
Referenced from: /Usrs/chao/.pyenv/versions/3.6.2/lib/python3.6/site-packages/lightgbm/lib_lightgbm.so
Reason: image not found
那么請先執行:這一步會卸載原來錯誤安裝的庫
pip uninstall lightgbm
3.正確安裝
保證之前錯誤的安裝已經卸載掉了,然后進行下面的操作。
1.確保homebrew安裝,並已經更新
brew update
brew upgrade
2.安裝cmake依賴
- 命令行,依次執行以下命令
brew install cmake
brew install gcc@7 --without-multilib
git clone --recursive https://github.com/Microsoft/LightGBM ;
cd LightGBM
mkdir build ;
cd build
cmake .. # 這一步會出錯,看下方編譯部分
make -j
3.編譯
在執行編譯cmake..
的時候出現如下錯誤
CMake Error at /usr/local/Cellar/cmake/3.15.5/share/cmake/Modules/CMakeDetermineCCompiler.cmake:49 (message):
Could not find compiler set in environment variable CC:
gcc-8.
Call Stack (most recent call first):
CMakeLists.txt:7 (PROJECT)
這個時候我們需要更換命令,注意查看自己電腦的gcc版本
cd /usr/local/bin
# 查看文件中的g++和gcc版本
我的是g++-9
和gcc-9
版本
cmake -DCMAKE_CXX_COMPILER=g++-9 -DCMAKE_C_COMPILER=gcc-9 ..
執行結果如下
-- The C compiler identification is GNU 9.2.0
-- The CXX compiler identification is GNU 9.2.0
// ...
-- Found OpenMP: TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/ryxiong/LightGBM/build
4.構建
- 命令執行
make -j4
- 正常運行結果
Scanning dependencies of target lightgbm
Scanning dependencies of target _lightgbm
[ 1%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/dataset.cpp.o
[ 3%] Building CXX object CMakeFiles/lightgbm.dir/src/io/dataset.cpp.o
// ...
[ 92%] Building CXX object CMakeFiles/_lightgbm.dir/src/treelearner/voting_parallel_tree_learner.cpp.o
[ 93%] Building CXX object CMakeFiles/_lightgbm.dir/src/metric/metric.cpp.o
[ 95%] Building CXX object CMakeFiles/lightgbm.dir/src/network/linkers_mpi.cpp.o
[ 96%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/tree.cpp.o
[100%] Linking CXX executable ../lightgbm
[100%] Linking CXX shared library ../lib_lightgbm.so
[100%] Built target lightgbm
[100%] Built target _lightgbm
- 並在上級目錄LightGBM下生成
lib_lightgbm.so*
和lightgbm*
兩個文件。
cd ..
ls
錯誤處理
如果出現以下錯誤:
/usr/local/Cellar/gcc@7/7.3.0/lib/gcc/7/gcc/x86_64-apple-darwin17.5.0/7.3.0/include-fixed/stdio.h:78:10: fatal error: _stdio.h: No such file or directory
#include <_stdio.h>
^~~~~~~~~~
compilation terminated.
- 則在Finder里按名稱匹配搜索_stdio.h,找到以
Copyright (c) 2000, 2005, 2007, 2009, 2010 Apple Inc. All rights reserved.
- 注釋信息開頭的_stdio.h,復制到以下目錄(具體地址參見報錯信息):
/usr/local/Cellar/gcc@7/7.3.0/lib/gcc/7/gcc/x86_64-apple-darwin17.5.0/7.3.0/incl
再重新執行第4步,然后項目構建成功。
安裝lightgbm
- 命令行執行:
cd python-package
pip install lightgbm
- 在命令行執行驗證是否安裝成功:
$ python
>>> import lightgbm as lgb
>>> lgb.LGBMClassifier()
LGBMClassifier(boosting_type='gbdt', class_weight=None, colsample_bytree=1.0,
learning_rate=0.1, max_depth=-1, min_child_samples=20,
min_child_weight=0.001, min_split_gain=0.0, n_estimators=100,
n_jobs=-1, num_leaves=31, objective=None, random_state=None,
reg_alpha=0.0, reg_lambda=0.0, silent=True, subsample=1.0,
subsample_for_bin=200000, subsample_freq=1)
- 終端使用OK,但是pycharm、notebook里還是不行,不出意外會顯示:
ImportError: No module named "lightgbm"
手動配置
- 拷貝/LightGBM/lib_lightgbm.so文件到/LightGBM/python-package/lightgbm/目錄下,再將/LightGBM/python-
- package/lightgbm整個文件夾拷貝到系統python的包目錄下,如:
cp lib_lightgbm.so /Users/ricky/LightGBM/build/LightGBM/build/LightGBM/python-package/lightgbm/
- 將lightgbm文件拷貝到Python的lib庫路徑下:
cp -r /Users/ricky/LightGBM/build/LightGBM/build/LightGBM/python-package/lightgbm ./