読者です 読者をやめる 読者になる 読者になる

プログラミングとかLinuxとかの備忘録

プログラミング、Linuxでハマった箇所や環境構築のメモ

scikit-learnインストール時のエラー対策

Python CentOS

scikit-learnインストール時のエラー対策2に別の対策方法を書きました.

CentOS7上のvirtualenvにscikit-learnをインストールした際に発生したエラーの解決法

エラー内容

scikit-learnインストール時に以下のエラーが出力された

(VENV)$ pip install scikit-learn
...(省略)...
g++ -pthread -shared build/temp.linux-x86_64-2.7/sklearn/svm/liblinear.o build/temp.linux-x86_64-2.7/sklearn/svm/src/liblinear/linear.o build/temp.linux-x86_64-2.7/sklearn/svm/src/liblinear/tron.o -L/usr/lib64/atlas -Lbuild/temp.linux-x86_64-2.7 -lcblas -lm -o build/lib.linux-x86_64-2.7/sklearn/svm/liblinear.so
    /bin/ld: -lcblas が見つかりません
    collect2: エラー: ld はステータス1で終了しました
    /bin/ld: -lcblas が見つかりません
    collect2: エラー: ld はステータス1で終了しました
    error: Command "g++ -pthread -shared build/temp.linux-x86_64-2.7/sklearn/svm/liblinear.o build/temp.linux-x86_64-2.7/sklearn/svm/src/liblinear/linear.o build/temp.linux-x86_64-2.7/sklearn/svm/src/liblinear/tron.o -L/usr/lib64/atlas -Lbuild/temp.linux-x86_64-2.7 -lcblas -lm -o build/lib.linux-x86_64-2.7/sklearn/svm/liblinear.so" failed with exit status 1
    
    ----------------------------------------
Command "$HOME/.pyenvdir/nipy/bin/python2.7 -c "import setuptools, tokenize;__file__='/tmp/pip-build-hwRkIK/scikit-learn/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-4iIt4Q-record/install-record.txt --single-version-externally-managed --compile --install-headers $HOME/.pyenvdir/nipy/include/site/python2.7/scikit-learn" failed with error code 1 in /tmp/pip-build-hwRkIK/scikit-learn

対策

まずsudoでインストールを試してみると以下のエラーが出力された

(VENV)$ sudo pip install scikit-learn
...(省略)...
from numpy.distutils.core import setup
    ImportError: No module named numpy.distutils.core

これはnumpyのバージョンが1.10.1であることが原因なので

(VENV)$ pip uninstall numpy
(VENV)$ pip install numpy==1.9.3

ここでscikit-learnをインストールする

(VENV)$ pip install scikit-learn
Successfully installed scikit-learn-0.16.1

追記

上記の方法でscikit-learnをインストールした後にnumpyをアップデートしても問題なく動いてる...