2016-08-16 89 views
-1

我在MacOS上使用Python 2.7,并且想要在python脚本中使用bash命令。在mac上使用python中的bash命令:error 127

command = "someProgram --option1 value 1 --option2 value 2" 

我必须在我的bash_profile中包含此程序的路径才能运行它。我测试至今:

os.system(command) 

subprocess.check_call(command.split(" "),shell=True) 

但是都没有成功。后者抛出错误127,第一个只返回32512.谷歌搜索告诉我,当命令不知道时会发生这种情况。

如果我现在在终端内启动此命令,一切正常。

我必须包含一些东西,使Python可以找到这个命令?这是为什么?

+0

命令是什么? – khelwood

+0

命令是什么? – ForceBru

+0

如果'someProgram'不在你的PATH中,那么你就是。而'command.split(“”)'不会工作的原因应该是完全明显的,当你的值可以有空格。 –

回答

0

感谢您的帮助。最终的解决方案有点愚蠢。我通过anaconda GUI开始了Spyder。如果我这样做,上面的代码不起作用。

如果我直接通过控制台运行或通过控制台启动spyder一切都很好。看起来bash_profile在加载spyder时没有加载,但需要控制台这么做

1

使用shell=True cmd必须是一个字符串。

subprocess.check_call(command, shell=True)

其中命令类型的str

+0

同样的错误没有分裂 – Glostas

+1

从这个讨论:'如果args是一个序列,第一个项目指定命令字符串,任何额外的项目将被视为外壳本身的附加参数。'通过列表,该程序的参数将作为参数传递给shell。 – danny

+0

可能是选项值的引用问题。尝试使用命令=“”“someProgram --option1 ='value 1'--option2 ='value 2'”“”“ – danny