3

我正在尝试使用 scipy.integrate.solve_ivp,但是任何需要 scipy 的导入语句都会出现问题,包括以下简单的内容:

import scipy

当我运行它时,我收到以下错误:

INTEL MKL ERROR:
   dlopen(/Users/user/.conda/envs/nephron/lib/libmkl_intel_thread.dylib, 9): 
   Library not loaded: @rpath/libiomp5.dylib
   Referenced from: /Users/user/.conda/envs/nephron/lib/libmkl_intel_thread.dylib
   Reason: no suitable image found.  Did find:
    /Users/user/.conda/envs/nephron/bin/../lib/libiomp5.dylib: file too short.
Intel MKL FATAL ERROR: Cannot load libmkl_intel_thread.dylib.

我在运行 macOS High Sierra 10.13.6 的 MacBook Air 上使用 Pycharm Community IDE(版本 2019.2.3)和 Anaconda 插件(但即使我在终端中执行脚本也会发生这种情况)和 Python 版本 3.7.5。我的包管理器是 conda 4.7.12。编辑:我安装了 scipy 1.3.1 版。

经过简短搜索后,我无法在 Stack 或 Google 上找到此错误的解释,我尝试查看它是否缺少我安装的软件包,但我查看了 Python 在 Pycharm 中使用的搜索路径(如通过在 Pycharm 的终端中运行进行测试,python -V如果我只是通过我的普通终端运行它,确实会发生这种情况),并且确实 scipy 是沿着搜索路径之一安装的。

编辑:

我尝试创建一个新环境,使用 删除现有环境,conda create -n nephron scipy但这并没有解决问题。

感谢另一位用户添加相关标签。

其他一些其他英特尔软件包(例如 numpy)似乎也会出现同样的问题。

4

2 回答 2

2

我在几个月前安装了 scipy 后安装 seaborn 时遇到了同样的问题。Scipy 安装了 mkl=2019 包,最新版本的 seaborn 需要 mkl=2020。

我所做的只是删除了 scipy、seaborn 和 mkl=2019,然后我从 conda 重新安装了它们。

于 2020-03-09T11:02:34.740 回答
0

根本原因可能是 NumPy,SciPy 无法加载正确的 MKL 或 Intel OpenMP 运行时库。这几乎总是由以下两种情况之一引起:

  1. NumPy 或 SciPy 的环境尚未激活。

  2. 另一家软件供应商已将 MKL 或 Intel OpenMP (libiomp5md.dll) 文件安装到 C:\Windows\System32 文件夹中。这些文件是在 Anaconda 之前加载的,它们不兼容。

尝试设置环境或预加载dll等。

这里是 Linux

export LD_PRELOAD=/opt/intel/mkl/lib/intel64/libmkl_def.so:/opt/intel/mkl/lib/intel64/libmkl_avx2.so:/opt/intel/mkl/lib/intel64/libmkl_core.so:/opt/intel/mkl/lib/intel64/libmkl_intel_lp64.so:/opt/intel/mkl/lib/intel64/libmkl_intel_thread.so:/opt/intel/lib/intel64_lin/libiomp5.so

在 Windows 中,通过 mkl/bin/mklvars.bat intel64 设置 env,然后在相同的环境中运行你的 python

或在 python 中手动添加库 sys.path.append("your path to the library") 或Pyinstaller numpy "Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll" ...

于 2019-12-20T12:32:29.583 回答