Matlab调用Python函数,出现OSError: [WinError 126] 找不到指定的模块报错

Matlab调用Python函数,出现OSError: [WinError 126] 找不到指定的模块报错,第1张

报错内容及解决方式:

报错的语句是:

py.importlib.import_module('main_matlab')

报错的内容为:

OSError: [WinError 126] 找不到指定的模块。 Error loading"(文件路径)/***.dll" or one of its dependencies.

解决方式:

上述报错提示我们系统缺少该dll文件或其对应的依赖项,

  • 先到对应路径查看该dll文件是否存在
  • 若不存在,直接在Anaconda配置环境的文件夹搜索,一般都可以找到。将找到的dll文件复制粘贴到根目录下
  • 若存在,说明是缺少该dll文件的依赖项,使用Dependencies工具查看所需要的依赖项,后补齐到根目录下

参考文献:

Pyinstaller打包Pytorch框架所遇到的问题_python_脚本之家 (jb51.net)


原始问题描述

在TRNSYS_Python联合仿真过程中,由于存在TRNSYS与Matlab的连接,Matlab与MySQL的连接,Matlab与Python的连接,Python与MySQL的连接,直接运行TRNSYS计算报错不显示具体位置,所以需要设置错误标签便于定位,最后定位到上述Matlab不能调用Python文件的情况仍花费很多时间。


解决过程

TRNSYS中报错如下:

 

由mFileErrorCode=120及info(7)=0&info(13)=0定位到m文件中出现上述变量值的位置,发现是一个函数调用出错,此函数内包含调用py文件的语句及数据库的连接与查询 *** 作语句,暂时不能明确是哪些语句出现问题。

于是我通过打标签的方式检查是函数中的哪一句出现了问题,具体 *** 作方式如下:

1.检验Matlab与MySQL连接正常

2.在之前定位到的函数内每一句之间插入写入数据库 *** 作

3.再重新运行TRNSYS,通过数据库里表格里显示的数值成功定位到函数内出问题的语句。

问题就出在设置的python文件无法调用,一般的思路就是Python的文件里的代码可能有问题,如果代码不复杂,就在Pycharm里运行代码看看是否有报错。

但是我的Python文件跑出来并未报错,于是我又采用逐步定位的方式,将Python中的代码一段一段解开注释,并在Matlab中调用该文件,最终将出问题的地方定位在import torch语句上。

其实这种方式可以在Matlab中一步解决,就是直接在Matlab命令行里执行文本开头报错的那段代码,Matlab会直接指出调用的Python文件中是哪一句出现了问题。

我自己的那种方式也只能定位错误,不能指出错在哪,而Matlab中报错信息就很详细,可以直接上网查询解决方式,不用自己组织语言。


总结

联合仿真报错无法精确定位,打标签定位错误的方式很有逻辑性也很实用,但是打完记得将 *** 作过的文件复原。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/735328.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存