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

问题描述

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

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 和 xm 脚本都在同一个目录中时,这些脚本按设计工作。但是,只要我将 MainFramework.py 移动到父目录,脚本就会给我以下 MATLAB 错误:未定义函数 'x'' 用于类型为“int64”的输入参数。

为了更好地理解,请在下面找到目录结构:

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

我已经仔细检查了路径以确保 MainFramework.py 调用了正确的 MainClass_X.py,并且我确信它确实如此。

我正在使用 MATLAB 2020a 和 Python 3.7 以及 Anaconda3 和 Spyder 作为 IDLE。

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

标签: pythonmatlabanacondapython-3.7

解决方案


推荐阅读