zoukankan      html  css  js  c++  java
  • [python] [lightgbm] Mac下安装lightgbm

    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++-9gcc-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 ./
    
  • 相关阅读:
    Windows server 2016 解决“无法完成域加入,原因是试图加入的域的SID与本计算机的SID相同。”
    Windows Server 2016 辅助域控制器搭建
    Windows Server 2016 主域控制器搭建
    Net Framework 4.7.2 覆盖 Net Framework 4.5 解决办法
    SQL SERVER 2012更改默认的端口号为1772
    Windows下彻底卸载删除SQL Serever2012
    在Windows Server2016中安装SQL Server2016
    SQL Server 创建索引
    C#控制台或应用程序中两个多个Main()方法的设置
    Icon cache rebuilding with Delphi(Delphi 清除Windows 图标缓存源代码)
  • 原文地址:https://www.cnblogs.com/ryxiong-blog/p/12074564.html
Copyright © 2011-2022 走看看