1. ホーム
  2. python

[解決済み] インテル® MKL FATAL ERROR。mkl_intel_thread.dllをロードできません。

2022-01-28 21:56:43

質問

前回も同様の質問をさせていただきました。 cx_Freeze unable fo find mkl: mkl fatal error: mkl_intel_thread.dllをロードできません。

しかし、今度は微妙に違うんです。私は anaconda をインストールせずにプログラムを実行したいのですが、ちょうど cmd.exe のターミナルを使用することができますが、何か間違っているのか、不可能なようです。

でアプリケーションを生成した後 python setup.py bdist_msi を使って cx-freeze をインストールし、anaconda 環境で実行することができますが、単に cmd.exe ターミナルで実行すると、次のようになります。

INTEL MKL ERROR: The specified module could not be found. mkl_intel_thread.dll.
Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.

しかし

where  mkl_intel_thread.dll

が見つかったので、これはシステムに登録されているということだと思います(私はLinuxの方に慣れているので、間違っているかもしれません)。

どうすればこの問題を解決できますか?

どのように解決するのですか?

おそらくMKLに必要な別のDLL、例えば libiomp5md.dll などが欠落しているため、エラーが発生します。参照 Python 実行ファイルに mkl_intel_thread.dll をロードできない という質問に対して、私の回答とそのコメントがあります。

それでも問題が解決しない場合は、他の DLL を手動で anaconda 環境のライブラリパスからアプリのインストールディレクトリとその lib サブディレクトリに移動します。どの依存関係が欠けているのかがわかったら、その依存関係に対して include_files オプションを使用すると、セットアップのこのステップを自動化できます。

もう一つ考えられる問題は、システムにインストールされている MKL のバージョンが互換性のないもので、フリーズしたアプリケーションがこの間違ったバージョンを見つけたということです。

EDIT

また、単に凍結したアプリケーションが mkl_intel_thread.dll ただし where が見つけます。 where で指定されたシステム検索パスを探します。 PATH 環境変数で指定されたモジュールの検索パスを探しますが、Pythonは sys.path の内容は通常含まれません。 PATH を参照してください。 Pythonのsys.pathはどこから初期化されるのですか? しかし、Windowsでは、登録されたDLLのフォールバック機構があります(その仕組みは知りません)。とにかく、他のシステムにアプリケーションをインストールして実行しようと思ったときに、このフォールバックに頼ってはいけません。なぜなら、必要なDLLがそこにインストールされていないかもしれないからです。したがって、必要な依存関係は常にインストールディレクトリに含まれている必要があります。