在Conda中导入PySpin:找不到mkl_intel_thread.dll

时间:2019-04-21 22:57:28

标签: python-3.x anaconda spyder pyspin

我在Anaconda / Python 3.6中将PySpin api用于Point Grey相机(该API代码仅适用于Python 3.6)。 api是名为Spinnaker(https://www.ptgrey.com/spinnaker-sdk)的C ++库的Python包装器。

当我在Spyder(import PySpin)中导入时,一切正常(请注意,我在安装了所有组件的环境中从Conda提示符启动Spyder)。不幸的是,从conda提示符而不是Spyder(python foo.py其中包含foo.py的Spyder运行导入会产生:

  

英特尔MKL致命错误:无法加载mkl_intel_thread.dll。

     

序号242不能位于动态链接库中   C:\ Anaconda3 \ Library \ bin \ mkl_intel_thread.dll

请注意,我在anaconda提示符下通过轮子安装了Spinnaker(PySpin):

import PySpin

网上有很多地方说要在C:\ Windows \ System32中找到以下文件并重命名或删除它们:

pip install spinnaker_python-1.20.0.15-cp36-cp36m-win_amd64.whl

这些文件不存在于我的计算机上,因此就我而言,这似乎不是问题。

例如,在这里他们提到了该解决方案:
The ordinal 242 could not be located in the dynamic link library Anaconda3\Library\bin\mkl_intel_thread.dll

3 个答案:

答案 0 :(得分:3)

当我第一次导入numpy和导入PySpin时,它对我有用。

import numpy as np # must be imported first
import PySpin

system = PySpin.System.GetInstance()
version = system.GetLibraryVersion()
print('Library version: %d.%d.%d.%d' % (version.major, version.minor, version.type, version.build))
# Library version: 1.20.0.15

我正在Windows 10和Miniconda上使用Python 3.5。

答案 1 :(得分:1)

Point Grey推荐的解决方案

来自Point Grey的开发人员,我通过电子邮件发送了该问题,他们已经知道了。他们建议删除随conda一起安装的numpy,然后使用pip重新安装。那就是:

conda uninstall numpy
pip install numpy

请注意,尽管此方法有效,但我不能保证它在包含其他依赖项的复杂项目中可以很好地扩展。

更新:此功能运行了一天左右,但在我添加其他依赖项/更新(尤其是OpenCV)时,它停止了工作。但是,也许其他人会对此解决方案有更好的把握,所以我将其保留在这里。


第二个解决方案

如果您在使用其他解决方案时遇到麻烦,请尝试一下对我有用的方法:从conda提示符启动的ipython运行代码,然后再次从conda运行:

ipythyon
%run foo.py  #script containing import PySpin
exit()

它在那里工作,这并不奇怪(这基本上是Spyder所做的)。奇怪的是,回到conda提示符后,我尝试再次运行该程序:

python foo.py

这一次它起作用了。因此,在我使用ipython进行操作之前,它不起作用,现在它正在起作用

坦率地说,我不知道为什么这可以解决问题,但是确实可以。 \ _(ツ)_ /

我将这些解决方案留在这里,但坦率地说,我将尝试在PySpin之前导入numpy,如公认的答案所示。这样更容易,破坏性更小。

答案 2 :(得分:1)

此问题是由spinnaker_python轮中包含的文件libiomp5md.dll与Anaconda发行版不兼容引起的。只需删除或重命名该文件,即可加载该文件的默认Anaconda版本。

在Anaconda提示符下执行以下命令以解决此问题。如果所有用户都安装了Anaconda,则需要管理员版本的Anaconda提示符。

move %CONDA_PREFIX%\Lib\site-packages\PySpin\libiomp5md.dll %CONDA_PREFIX%\Lib\site-packages\PySpin\libiomp5md.bak