使用Python调用不同目录中的MATLAB脚本会导致“int64”类型的输入参数的未定义函数“x”

2024-05-23 20:01:05 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我正在构建一个使用MATLAB和Python脚本的测试框架。我有一个主脚本,比如说'MainFramework.py',它调用并传递参数给一个类,比如说'MainClass_X.py',它调用并传递参数给一个函数,比如说'X.py',这个函数本身调用并传递参数给'X.m'

MainFramework.py具有以下代码格式:

from MainClass_X import MainClass_X 
arg1="something1"
arg2="something2"
Test=MainClass_X(arg1,arg2)
Test.run() 

MainClass_X.py具有以下代码格式:

from x import x
class MainClass_X(object):
 def __init__(self,paramater1,parameter2):
   self.paramater1=paramater1
   self.paramater2=paramater2
 def run(self):
   x(self.paramater1,self.paramater2)

函数x.py的代码格式如下:

import matlab.engine
def x(arg1,arg2):
  eng=matlab.engine.start_matlab()
  eng.x(arg1,arg2,nargout=0)

当MainFramework.py、MainClass_X.py、X.py和X.m脚本都位于同一目录中时,脚本将按设计工作。但是,当我将MainFramework.py移动到父目录中时,脚本会给我以下MATLAB错误:输入参数类型为“int64”的未定义函数“x”

为了更好地理解,请查看以下目录结构:

__directory1__
   MainFramework.py
__directory1/subdirectory1__
   MainClass_X.py
   x.py
   x.m

我已经仔细检查了路径,以确保MainFramework.py调用了右侧的MainClass_X.py,我确信它确实调用了

我正在使用Matlab2020a和Python3.7,以及Anaconda3和Spyder作为空闲

有没有办法绕过这个错误。对于任务而言,python脚本位于不同的目录中是非常重要的


Tags: 函数代码pyimportself目录脚本参数