我正在使用python执行一行shell脚本。 which无法测试自制程序的存在

#!/usr/bin/python
import sys, subprocess
subprocess.call(["which python"])


引发长时间错误

Traceback (most recent call last):
  File "installations.py", line 5, in <module>
    subprocess.call(["which python"])
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 522, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 709, in __init__
    errread, errwrite)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1326, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory


但是我知道shell执行在某种程度上可以正常工作

#!/usr/bin/python
import sys, subprocess
subprocess.call(["whoami])


打印我的用户名就好了。我是在做错什么,还是由于某种原因不支持。有没有更好的支持方式来检测安装的存在?

最佳答案

失败的调用试图找到名为'哪个python'且未运行which且参数为python的可执行文件。您传递给调用的列表(除非设置了shell=True)是命令和所有参数的列表。在做

subprocess.call(['which', 'python'])


可能会给您您想要的东西。

关于python - 执行Shell脚本时出现Python错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30058650/

10-12 00:43
查看更多