pipでxgboostをインストールするとエラーになる

機械学習

結論

pipを最新にしてxgboostをインストールする

pip install --upgrade pip
pip install xgboost

経緯

Kaggleで遊ぶために、開発環境を用意しようと思い、Docker HubオフィシャルイメージのPython:3.7.0でxgboostをインストールしようとした。

> pip install xgboost
~~~    
error: [Errno 2] No such file or directory: 'cmake': 'cmake'
    ----------------------------------------
Command "/usr/local/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-xsqriy3o/xgboost/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-9d5lcmw_/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-xsqriy3o/xgboost/
You are using pip version 18.1, however version 21.2.4 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

cmakeが無いのでエラーになっているようなログだったので、cmakeをインストールして再度xgboostをインストールする。

> apt update && apt install -y cmake
~~~
> pip install xgboost
~~~
    INFO:XGBoost build_ext:Building from source. /tmp/pip-install-0i5oh6j7/lib/libxgboost.so
    INFO:XGBoost build_ext:Run CMake command: ['cmake', 'xgboost', '-GUnix Makefiles', '-DUSE_OPENMP=1', '-DUSE_CUDA=0', '-DUSE_NCCL=0', '-DBUILD_WITH_SHARED_NCCL=0', '-DHIDE_CXX_SYMBOLS=1', '-DUSE_HDFS=0', '-DUSE_AZURE=0', '-DUSE_S3=0', '-DPLUGIN_LZ4=0', '-DPLUGIN_DENSE_PARSER=0']
    CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
      CMake 3.13 or higher is required.  You are running version 3.7.2
~~~
    subprocess.CalledProcessError: Command '['cmake', 'xgboost', '-GUnix Makefiles', '-DUSE_OPENMP=0', '-DUSE_CUDA=0', '-DUSE_NCCL=0', '-DBUILD_WITH_SHARED_NCCL=0', '-DHIDE_CXX_SYMBOLS=1', '-DUSE_HDFS=0', '-DUSE_AZURE=0', '-DUSE_S3=0', '-DPLUGIN_LZ4=0', '-DPLUGIN_DENSE_PARSER=0']' returned non-zero exit status 1.
    
    ----------------------------------------
Command "/usr/local/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-0i5oh6j7/xgboost/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-gf6cgp94/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-0i5oh6j7/xgboost/
You are using pip version 18.1, however version 21.2.4 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

デフォルトでインストールできるcmakeのバージョンが古いようで面倒なことになりそうだと思ったが、pipのバージョンが古いと言われているので、なんとなくバージョンをあげることにした。するとxgboostのインストールが成功した。

> pip install --upgrade pip
> pip install xgboost

コメント