我正在使用Imatest IT(v5.0.1),并且需要对我的Python代码使用Imatest IT测试,但是,我的Python代码也与MATLAB的(2017b)Python API接口,似乎存在冲突。
您可以在下面看到,仅在导入matlab.engine之后尝试导入ImatestLibrary会导致异常。
仅导入一个或另一个不会引起任何问题。
import matlab.engine
from imatest.it import ImatestLibrary
Exception caught during initialization of Python interface. Details: DLL load failed: The specified procedure could not
be found.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python34\lib\site-packages\imatest\it.py", line 6, in <module>
import imatest.library
File "C:\Python34\lib\site-packages\imatest\library\__init__.py", line 279, in <module>
_pir.import_cppext()
File "C:\Python34\lib\site-packages\imatest\library\__init__.py", line 272, in import_cppext
self.cppext_handle = importlib.import_module("matlabruntimeforpython" + self.interpreter_version)
File "C:\Python34\lib\importlib\__init__.py", line 109, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ImportError: DLL load failed: The specified procedure could not be found.
有没有办法解决这个问题?
最佳答案
根据the documentation of the Imatest Python interface有关导入imatest.it
的信息:
在后台,ImatestLibrary构造函数将启动Matlab MCR运行时,并将所有IT库加载到内存中。
这表明imatest
本身会干扰MATLAB引擎的状态。虽然导入顺序通常无关紧要,但是某些导入应该先于其他导入进行适当的初始化,而稍后导入的模块依赖于较早导入的模块(例如,先导入matplotlib
并设置后端,然后再导入pyplot
将使用上述后端)。
因此,我唯一的建议是尝试切换导入顺序以查看是否有帮助。如果不是这样,那么您很不走运(就Stack Overflow而言):MATLAB和Imatest都是昂贵的专有(甚至是封闭源代码)产品,因此您应该向其中一个或两个提交错误报告,因为没人其他人将能够判断是否以及如何解决冲突。
关于python - MATLAB引擎和Imatest IT的导入冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51929303/