我在Anaconda中使用PySpin api作为点灰相机。api是一个C++库的Python包装器,名为Spinnaker (https://www.ptgrey.com/spinnaker-sdk)。
当我导入Spyder (import PySpin)时,一切正常(注意,我在安装所有东西的环境中从Conda提示符启动Spyder )。不幸的是,从conda提示符而不是Spyder (python foo.py,其中foo.py包含import PySpin)运行导入会产生以下结果:
英特尔MKL致命错误:无法加载mkl_intel_thread.dll。 序数242不能位于动态链接库C:\Anaconda3\Library\bin\mkl_intel_thread.dll中。
注意:我在anaconda提示符下从轮子上安装了Spinnaker (PySpin):
pip install spinnaker_python-1.20.0.15-cp36-cp36m-win_amd64.whl它说,在C:\Windows\System32 32中找到以下文件,并重命名或删除它们:
mkl_core.dll
mkl_def.dll
mkl_intel_thread.dll这些文件不在我的机器上,所以在我的情况下,这似乎不是问题所在。
例如,这里他们提到了这个解决方案:
发布于 2019-04-23 14:00:23
当我第一次导入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下使用Python3.5和Miniconda。
发布于 2019-05-05 23:37:55
这个问题是由libiomp5md.dll轮毂中包含的文件spinnaker_python与Anaconda发行版不兼容引起的。简单地删除或重命名该文件将导致默认的Anaconda版本的文件将被加载。
从Anaconda提示符中执行以下命令以解决问题。如果为所有用户安装了Anaconda,则需要Anaconda提示符的Administrator版本。
move %CONDA_PREFIX%\Lib\site-packages\PySpin\libiomp5md.dll %CONDA_PREFIX%\Lib\site-packages\PySpin\libiomp5md.bak发布于 2019-04-22 18:35:18
灰色点推荐的解决方案
从点格雷的开发人员那里,我给他发了邮件,他们知道这个问题。他们建议删除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,就像接受的答案一样。只是比较容易,也不那么有破坏性。
https://stackoverflow.com/questions/55787461
复制相似问题