Shappackがpipインストールできない時の対処法
諸事情でshappackが必要になったのでインストールし用としたところで行き詰まりました。
なんとか解決策を見つけたので備忘録として残しておきます。
お急ぎの方は「解決」までスクロールしてお読みください。
課題:Shappackをインストールできない
いつもの通りpipでインストールしようとしたところ、以下のエラーを吐きました。
Collecting shappack
Downloading shappack-0.1.1-py3-none-any.whl.metadata (689 bytes)
Collecting sklearn (from shappack)
Downloading sklearn-0.0.post12.tar.gz (2.6 kB)
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [15 lines of output]
The 'sklearn' PyPI package is deprecated, use 'scikit-learn'
rather than 'sklearn' for pip commands.
Here is how to fix this error in the main use cases:
- use 'pip install scikit-learn' rather than 'pip install sklearn'
- replace 'sklearn' by 'scikit-learn' in your pip requirements files
(requirements.txt, setup.py, setup.cfg, Pipfile, etc ...)
- if the 'sklearn' package is used by one of your dependencies,
it would be great if you take some time to track which package uses
'sklearn' instead of 'scikit-learn' and report it to their issue tracker
- as a last resort, set the environment variable
SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True to avoid this error
More information is available at
https://github.com/scikit-learn/sklearn-pypi-package
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
よくわからないので
error: subprocess-exited-with-error
で検索しました。
shappackインストールできない問題:何が悪さをしているのか
プログラムが吐いた文章を翻訳してみると以下の通りでした。
PyPIの'sklearn'パッケージは非推奨のため、pipでは代わりに'scikit-learn'を使用してください。
このエラーを修正する方法は以下の通り:
- pip install sklearn' ではなく 'pip install scikit-learn' を使用する。
- pip requirements ファイルで 'sklearn' を 'scikit-learn' に置き換えます。
(requirements.txt, setup.py, setup.cfg, Pipfile など...)
- もし、'sklearn' パッケージが依存パッケージの一つで使用されている場合、
どのパッケージが'sklearn'ではなく
scikit-learn' の代わりに 'sklearn' を使っているパッケージを追跡し、issue tracker に報告してください。
- 最後の手段として、環境変数
SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=Trueを設定して、このエラーを回避してください。
詳しい情報は
https://github.com/scikit-learn/sklearn-pypi-package
[出力終了]
note: このエラーはサブプロセスから発生しており、pipの問題ではないようです。
error: metadata-generation-failed
× パッケージメタデータの生成中にエラーが発生しました。
╰─> 出力については上記を参照してください。
note: これは上記のパッケージの問題であり、pipの問題ではありません。
hint: 詳細は上記を参照してください。
「pipの問題」ではないようです。
上のコードで示されたリンク先の文章も読んでみました。
今回の場合(多分)shappackの内部でsklearnが使われているため、このエラーが出たのだと思います。
そのため、エラー修正の方法として挙げられた4つの方法のうち上から3つはどうしようもできないと想定し、4つ目の対処法で行うことにしました。
解決策:実はそんなに難しくなかった
さて、「最後の手段」として挙げられた方法をやってみます。設定するのは以下の環境変数です。
SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True
Windowsの場合
私はWindowsで使用するつもりなので、早速この環境変数を設定します。
今回の場合、インストールの際にsklearnが使えれば良いので、コマンドプロンプト上でsklearnを使えるようにします。
コマンドプロンプトを管理者として実行し、以下の文を入力します。
set SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True
その後に、shappackをpipインストールします。
pip install shappack
これだけです。正常にインストールできました。
Macの場合
私は普段使いではMacなので、Macでのインストール方法についても書いておきます。
export SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True
pip install shappack
以上です。
まとめ
shappackのインストールがうまくいかなかったのはsklearnが非推奨であったことが原因でした。
これらは環境変数を設定することで解決できました。
ちなみに、ここで設定した環境変数は現行のセッションでのみ有効です。そのため、また同様のエラーが出た場合には同じように対処する必要があります。
私のブログではpythonやtensorflowでよくあるエラーとその対処法についてまとめていますのでぜひ困った時にご覧ください。