使用系统调用从MATLAB执行python脚本的问题

时间:2011-02-15 17:01:57

标签: python matlab numpy

我有一个MATLAB函数需要与python代码进行通信(不是快速,而不是经常)。我有MATLAB写数字到文件。 Python读取文件,进行一些计算,并将一些结果写入另一个文件。然后MATLAB读取该文件并继续运行。

我遇到的问题是当我想从MATLAB执行python脚本时。我在过去发现只需在MATLAB中执行系统调用就足够了:

  

system('python myscript.py')

然而,当它到达python脚本中的那个点时,似乎不喜欢numpy函数'loadtxt':

  

NameError:未定义名称“loadtxt”

我正在定义它(来自numpy import *)。如果我只是从终端执行脚本,它会使用loadtxt读取文件就好了。只有当我使用系统调用执行脚本时,我才会收到该错误。 python .py文件与进行系统调用的MATLAB .m文件位于同一目录中。我已经使用相同的方法执行了没有loadtxt的其他脚本。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

看起来你正在使用OS X.强烈建议不要使用OS X中使用的python解释器的全局定义。

您可以直接调用所需的口译员。因此,不要调用system('python myscript.py'),而是将所需的解释器的完整路径转换为变量并调用:

system([use_this_python ' myscript.py'])

或类似的东西。

你究竟想知道你和使用它的人之间要使用什么python解释器。也许它只是默认调用“python”,但允许用户通过配置文件指定一些任意的解释器。

答案 1 :(得分:0)

执行system命令时,系统上的shell和Matlab打开的shell不一定相同。

重要的是,可能存在不同的环境变量。尝试例如执行system('echo $PATH')以检查您是否有权访问所有库。