LoginSignup
3
4

More than 3 years have passed since last update.

WindowsのPythonで、Cannot load mkl_intel_thread.dll に詰まったら

Last updated at Posted at 2020-03-31

何番煎じかわからないけれど、Windows上のPython (Anaconda/Miniconda) で Intel MKL Fatal ERROR: Cannot load mkl_intel_thread.dll で自分も詰まって、色々調査して解決したので、自分の思うベストソリューションをまとめてみる。

1. まず、どのdllが読み込まれているかを確認する

Anaconda PromptやPowershellなどで、where.exe mkl_intel_thread.dll を実行するとどのdllが読み込まれているかがわかる。

> where.exe mkl_intel_thread.dll

C:\Miniconda3\envs\mkl_test\Library\bin\mkl_intel_thread.dll

# メモ: Powershellで実行する場合は、where じゃなくて必ず where.exe !

ここでAnacondaやMinicondaでインストールされている以外のdllが表示されているときは、間違いなくバージョンのミスマッチでうまくいかないので、削除するか別のフォルダに移動する。(ちなみに手動でIntelのサイトから最新バージョンのMKLを入れている場合も、一旦Pathのフォルダから消したほうが良い。自分はここでハマッた。)

なお、conda activate xxx を行うと where.exe の表示も変わるので、condaで独自環境を作っている場合は先にactivateしてから実行すべき。

2. dllを整理してもうまく行かなかったら、新規に環境を作る

1.の手順で、余計なdllを削除して再度実行してもうまく行かない場合は、新規環境を作るのが良い。例えばPython3.6.5で環境を新規に作る場合は以下。mkl_testのところは好きな名前でOK。

conda create -n mkl_test python=3.6.5
conda activate mkl_test

# NOTE: Anaconda PromptではなくPowershellで最初にactivateを行うときは、
#   `conda init powershell` してPowershellの再起動が必要。

ただしこの create のとき、いつものように最後にanacondaを入れると、デフォルトのnumpyとかscipyとかが入ってしまうので、入れるべきではない。あくまでMKLから先にインストールして、そこから自分の必要なライブラリをどんどん追加していく

MKLのバージョンについては、自分は2019.4ではうまく行かず、2019.1や2018.0.3ではうまくいった。

conda install mkl=2019.1

ここから、必要なライブラリを追加していく。

conda install numpy scipy
conda install -c pytorch pytorch=0.4.1
# などなど

そして最終的に where.exe mkl_intel_thread.dll でdllを確認して、今回作った環境のenvs以下のdllのみが表示されているのが正しい。

> where.exe mkl_intel_thread.dll

C:\Miniconda3\envs\mkl_test\Library\bin\mkl_intel_thread.dll

この状態でもう一度 import numpy などを実行すれば、多分うまくいく。

3
4
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
3
4