Scikit-learnをpipでインストールしようとしたところ、以下のエラーが発生。
% pip install --no-cache-dir scikit-learn
Collecting scikit-learn
Downloading scikit-learn-1.0.2.tar.gz (6.7 MB)
|████████████████████████████████| 6.7 MB 2.6 MB/s
Installing build dependencies ... error
ERROR: Command errored out with exit status 1:
command: /Users/kazuoji/.anyenv/envs/pyenv/versions/3.10.1/bin/python3.10 /private/var/folders/f4/y27nzgxx5tj5z47wlnhzmstw0000gp/T/pip-standalone-pip-9xm0_tvt/__env_pip__.zip/pip install --ignore-installed --no-user --prefix /private/var/folders/f4/y27nzgxx5tj5z47wlnhzmstw0000gp/T/pip-build-env-spg_3si1/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- 'setuptools<60.0' wheel 'Cython>=0.28.5' 'oldest-supported-numpy; python_version!='"'"'3.7'"'"' or platform_machine=='"'"'aarch64'"'"' or platform_system=='"'"'AIX'"'"' or platform_python_implementation == '"'"'PyPy'"'"'' 'numpy==1.14.6; python_version=='"'"'3.7'"'"' and platform_machine!='"'"'aarch64'"'"' and platform_system!='"'"'AIX'"'"' and platform_python_implementation != '"'"'PyPy'"'"'' 'scipy>=1.1.0'
cwd: None
Complete output (37758 lines):
...
目次
結論
- Apple M1チップのMacOSの場合、Scikit-learnのインストールがうまくいかない事象あり。
- バージョン3.10のpythonでは解消できなかった。
- バージョン3.9.9のpythonに切り替えて、以下の手順で解消。
- (1) scikit-learnのwheelイメージをダウンロード
- (2) Anacondaのリポジトリからscipyをインストール
- (3) pipでScikit-learnをインストール
環境
- macOC Big Sur 11.6 ( Chip : Apple M1 )
- pyenv 2.2.3
- pip 21.3.1
- python 3.9.9
解消手順
情報源はScikit-learnの公式サイトの「Installing on Apple Silicon M1 hardware」でアナウンスされているgithubリンクから情報を取得している。
(1)scikit-learnのwheelイメージをダウンロード
以下のリンクをクリックし、イメージをダウンロードします。
(2)Anacondaのリポジトリからscipyをインストール
以下のコマンドでインストールする。
pip install scipy --index-url=https://pypi.anaconda.org/scipy-wheels-nightly/simple
もし以下のようなエラーが出れば、numpyを1.17.3以上にアップグレードして、再実行すると解消できる。
ERROR: Cannot install scipy==1.8.0.dev0+1753.a063cf3, scipy==1.8.0.dev0+1761.be2027d, scipy==1.8.0.dev0+1776.48e1dd7, scipy==1.8.0.dev0+1832.bdf109c, scipy==1.8.0.dev0+1869.838cfbe, scipy==1.8.0.dev0+1921.c30fefc, scipy==1.8.0.dev0+1981.16d9e82, scipy==1.8.0.dev0+1984.f1c6b54, scipy==1.8.0.dev0+2060.9484b9d, scipy==1.8.0.dev0+2082.296b550, scipy==1.8.0.dev0+2083.8dd161d, scipy==1.8.0.dev0+2091.57bf4d6, scipy==1.8.0.dev0+2099.3f05efb, scipy==1.8.0.dev0+2102.f953ba7, scipy==1.8.0.dev0+2203.9256b56, scipy==1.9.0.dev0+1049.c9cdbf2, scipy==1.9.0.dev0+1057.202d03c and scipy==1.9.0.dev0+1091.e569c7a because these package versions have conflicting dependencies.
The conflict is caused by:
scipy 1.9.0.dev0+1091.e569c7a depends on numpy>=1.17.3
scipy 1.9.0.dev0+1057.202d03c depends on numpy>=1.17.3
scipy 1.9.0.dev0+1049.c9cdbf2 depends on numpy>=1.17.3
scipy 1.8.0.dev0+2203.9256b56 depends on numpy>=1.17.3
scipy 1.8.0.dev0+2102.f953ba7 depends on numpy>=1.17.3
scipy 1.8.0.dev0+2099.3f05efb depends on numpy>=1.17.3
scipy 1.8.0.dev0+2091.57bf4d6 depends on numpy>=1.17.3
scipy 1.8.0.dev0+2083.8dd161d depends on numpy>=1.17.3
scipy 1.8.0.dev0+2082.296b550 depends on numpy>=1.17.3
scipy 1.8.0.dev0+2060.9484b9d depends on numpy>=1.17.3
scipy 1.8.0.dev0+1984.f1c6b54 depends on numpy>=1.17.3
scipy 1.8.0.dev0+1981.16d9e82 depends on numpy>=1.17.3
scipy 1.8.0.dev0+1921.c30fefc depends on numpy>=1.17.3
scipy 1.8.0.dev0+1869.838cfbe depends on numpy>=1.17.3
scipy 1.8.0.dev0+1832.bdf109c depends on numpy>=1.17.3
scipy 1.8.0.dev0+1776.48e1dd7 depends on numpy>=1.17.3
scipy 1.8.0.dev0+1761.be2027d depends on numpy>=1.17.3
scipy 1.8.0.dev0+1753.a063cf3 depends on numpy>=1.17.3
To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict
ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies
Numpyをアップグレード
pip install --upgrade numpy
以下でnumpyのバージョンを確認。
pip show numpy
(3)pipでScikit-learnをインストール
以下のコマンドでScikit-learnをインストール。
pip install ダウンロードしたwheelイメージのファイルパス
例えば以下のような感じ。
pip install .wheels/scikit_learn-1.1.dev0-cp39-cp39-macosx_11_0_universal2.whl
確認
以下のコマンドでインストールされていることを確認する。import文でsklearnをimportできるかを確認するでも良い。
% pip show scikit-learn
Name: scikit-learn
Version: 1.1.dev0
Summary: A set of python modules for machine learning and data mining
Home-page: http://scikit-learn.org
Author:
Author-email:
License: new BSD
Location: /Users/kazuoji/.anyenv/envs/pyenv/versions/3.9.9/lib/python3.9/site-packages
Requires: joblib, numpy, scipy, threadpoolctl
Required-by: