はじめに
書籍「Kaggleで勝つデータ分析の技術」を読んで
サンプルコードを入手したので早速試してみたら
しょっぱなで環境的な問題でハマったのでそのときの対処を記録する。
いまだに原因はよくわかっていない
発生した事象
ch01/ch01-01-titanic.py実行時
24行目:from sklearn.preprocessing import LabelEncoder
を読み込んだところで、
「ImportError: DLL load failed: 指定されたモジュールが見つかりません。」
を出力してエラー終了する。
実行環境
OS:Windows10
anaconda3環境で実行
- Python 3.7.3
- pip 19.1.1
- numpy 1.17.2
- scipy-1.2.1
- scikit-learn-0.21.2:
やったこと
参考:https://teratail.com/questions/102949
>pip uninstall numpy
実行したところnumpyのuninstallはできたっぽいがその直後
「PermissionError: [WinError 5] アクセスが拒否されました。: 'c:\users\watya\anaconda3\lib\site-packages\~umpy\.libs\libopenblas.TXA6YQSD3GCQQC22GEQ54J2UDCXDXHWN.gfortran-win_amd64.dll'」
というエラーメッセージを吐いて異常終了
しかしその後もメゲず
>pip install -U numpy scipy scikit-learn
したところ、こちらは正常終了。
結果、↓↓のようにnumpy, scipy, scikit-learnのバージョンが上がり
この状態で、コード[ch01-01-titanic.py]を実行したところ、エラーは発生しなくなった。
実行後の環境
OS:Windows10
anaconda3環境で実行
- Python 3.7.3
- pip 19.1.1
- numpy 1.17.4 ←バージョンあがった
- scipy-1.4.1 ←バージョンあがった
- scikit-learn-0.22 ←バージョンあがった
とはいえ、直ったので原因を深堀する
落ち着いエラー発生時のスタックとレースをおいかけると
"C:\Users\watya\Anaconda3\Lib\site-packages\scipy\sparse\linalg\isolve\iterative.py"
の
10行目:from . import _iterative
を読み込んだ時に「モジュール見つかりません」というエラーがでていたようだ。
このキーワードでぐぐったところ
参考:https://teratail.com/questions/93662
によると、
>恐らく、根本原因は先の回答にもありますが、MKL関連のライブラリがないことでしょう。
とのこと。
で、結論としてはnumpy含めたライブラリの再インストールということらしい。
詳細はURLに譲るとしてMKLという言葉も初耳だし、condaとpipの混合は危険とか
これも初耳だし、なんで危険なんだろう?という疑問すらわかないくらい自分はまだまだ無知だ
ということだけはわかった。
勉強になりました。