使用系统调用从MATLAB执行python脚本时出现问题

使用系统调用从MATLAB执行python脚本时出现问题,python,matlab,numpy,Python,Matlab,Numpy,我有一个需要与python代码进行通信(不是很快,也不是经常)的MATLAB函数。我让MATLAB将数字写入文件。Python读取文件,进行一些计算,并将一些结果写入另一个文件。然后MATLAB读取该文件并继续它的过程 我遇到的问题是,当我想从MATLAB执行python脚本时。我发现在过去,仅在MATLAB中执行系统调用就足够了: 系统('python myscript.py') 但是,在python脚本中,当numpy函数“loadtxt”达到该点时,它似乎并不喜欢: NameError:未

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

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

系统('python myscript.py')

但是,在python脚本中,当numpy函数“loadtxt”达到该点时,它似乎并不喜欢:

NameError:未定义名称“loadtxt”

我正在定义它(从numpy导入*)。如果我只是从终端执行脚本,它会使用loadtxt读取文件。只有在使用系统调用执行脚本时,才会出现该错误。python.py文件与进行系统调用的MATLAB.m文件位于同一目录中。我使用同样的方法执行了其他没有loadtxt的脚本


有什么建议吗?

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


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

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


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

看起来您正在使用OS X。最好不要试图在OS X中使用什么python解释器的全局定义上乱动

您可以直接调用所需的解释器。因此,不要调用
系统('python myscript.py')
,而是将所需解释器的完整路径放入变量并调用:

system([use_this_python ' myscript.py'])
或者类似的东西


确切地说,在您和使用python解释器的人之间,您想要确定使用哪种python解释器。默认情况下,可能只是让它调用“python”,但允许用户通过配置文件指定一些任意解释器。

看起来您正在使用OS X。最好不要尝试在OS X中使用什么python解释器的全局定义

您可以直接调用所需的解释器。因此,不要调用
系统('python myscript.py')
,而是将所需解释器的完整路径放入变量并调用:

system([use_this_python ' myscript.py'])
或者类似的东西


确切地说,在您和使用python解释器的人之间,您想要确定使用哪种python解释器。默认情况下,可能只是让它调用“python”,但允许用户通过配置文件指定一些任意解释器。

如果您从numpy import loadtxt中添加一个
,就在numpy import*
上方,您是否看到该行有错误?
import*
通常不受欢迎,因为它会导致命名空间冲突。此外,您可能还需要检查MATLAB与terminal使用的Python和NumPy版本。尝试从shell和MATLAB中的系统执行
which Python
,并比较结果。(如果你使用的是Windows,我认为相当于
which
就是
what
)@kwatford,结果是不同的。有人能解释一下我如何改变路径,使它们相同吗?是否有一种方法可以调用系统范围内的更改以始终使用一个版本的python?system('which python')给出/usr/bin/python,system('echo$PYTHONPATH')给出/Library/Frameworks/python.framework/Versions/Current/bin/python2.7如果您从numpy import loadtxt添加
,就在numpy import*
的上方,您看到该行有错误吗?
import*
通常不受欢迎,因为它会导致命名空间冲突。此外,您可能还需要检查MATLAB与terminal使用的Python和NumPy版本。尝试从shell和MATLAB中的系统执行
which Python
,并比较结果。(如果你使用的是Windows,我认为相当于
which
就是
what
)@kwatford,结果是不同的。有人能解释一下我如何改变路径,使它们相同吗?是否有一种方法可以调用系统范围内的更改以始终使用一个版本的python?system('which python')给出/usr/bin/python,system('echo$PYTHONPATH')给出/Library/Frameworks/python.framework/Versions/Current/bin/python2.7