LoginSignup
10
13

More than 3 years have passed since last update.

「ImportError: DLL load failed: 指定されたモジュールが見つかりません。」が出たの時の対処

Posted at

はじめに

書籍「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の混合は危険とか
これも初耳だし、なんで危険なんだろう?という疑問すらわかないくらい自分はまだまだ無知だ
ということだけはわかった。

勉強になりました。

10
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
13