如何通过相同的python子进程导出MATLABPATH并调用matlab函数?

时间:2015-08-10 09:25:40

标签: python matlab

我需要从python脚本中使用已定义的MATLABPATH调用matlab,我尝试使用python中的以下代码(片段)执行此操作:

addMatlabPath = os.path.join(<validPath>,'src') + ":" + \
              os.path.join(<someOtherValidPaht>,'src') + ":"
matlabPathCommand = "export MATLABPATH="+addMatlabPath+"$MATLABPATH"
commandLine = matlabPathCommand+" && echo $MATLABPATH && "+"/Applications/MATLAB_R2015a.app/bin/matlab -nodisplay -nosplash -r \"my_matlab_script\"".format(os.path.realpath(os.path.dirname(__file__)),output_dir)

我尝试通过子进程执行commandLine:

process = subprocess.check_call(commandLine, stdout=out_buffer, stderr=subprocess.STDOUT,shell=True) 

我可以在没有matlabPathCommand和前面的回声部分的情况下完美地调用matlab。

我用于变量addMatlabPath的路径是有效的。我测试了命令matlabPathCommand+ && echo $MATLABPPATH,这可以正常工作。

因此,命令的两个部分都按预期单独工作,但不能一起工作。 Python似乎挂在check_call命令中,即使经过多次调用matlab通常需要,也不会返回。

是否有人提示我的错误可能是什么?

1 个答案:

答案 0 :(得分:0)

上面的python代码片段是正确的。 matlab代码中存在一个问题,我在测试时无法识别。可以删除此问题和答案。