我有一个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的其他脚本。
有什么建议吗?
答案 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')
以检查您是否有权访问所有库。