我在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
答案 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的开发人员,我通过电子邮件发送了该问题,他们已经知道了。他们建议删除随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