我有一个大型的Matlab项目,由于xlsread和Mac OS的问题,我包括了Mac交换机。如果该开关打开,我希望Matlab通过这样的系统命令执行python脚本:
cmdStr = 'python3 osx_conversion.py'
if osxSwitch == 1
[status,result] = system(cmdStr);
if status ~= 0
error('System could not run Python conversion file')
end
else
...
这将返回结果:
/bin/bash: python3: command not found
现在,如果我改为使用“ python osx_conversion.py”,则出现的错误与使用python 3语法有关,因为我的mac上的python命令将调用python 2。 任何关于正在发生的事情的想法都会受到赞赏。
编辑:为澄清起见,如果我通过终端运行“ python3 osx_conversion.py”,它将运行顺利
编辑2:运行结果
echo $PATH
在终端中:
/anaconda3/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/Library/TeX/texbin:/usr/local/go/bin:/usr/local/MacGPG2/bin:/opt/X11/bin:/opt/ImageMagick/bin:/Applications/Wireshark.app/Contents/MacOS:/usr/local/go/bin
答案 0 :(得分:2)
您的问题是Matlab运行的命令找不到您的python 3解释器,我猜它是作为root用户运行的,因此PATH与您的用户中的PATH不同。
基本上,您可以为所需的Python解释器指定完整的PATH,在您的情况下为/anaconda3/bin/python3
,但是对于其他用户而言,PATH可能会有所不同。
无论如何,您始终可以在终端中运行whereis python3
来查找用户Python解释器的完整PATH,并在Matlab中使用完整的PATH。