子进程 - OSError [Errno 13] - 虽然权限似乎没问题 - Python 2.7 / OSX

subprocess - OSError [Errno 13] - although permissions seem ok - Python 2.7 / OSX

我是子流程的新手。

当我运行:

subprocess.Popen(['/Applications/Calculator.app'])

我收到 OSError。

当我检查 Calculator.app 的权限时,它们看起来很好 (drwxr-xr-x)。它说 'wheel' 而不是 'admin' 或 'staff'.

我在使用其他应用程序时也出现此错误。

另一方面我可以做:

subprocess.call(['open', '/Applications/Calculator.app'])

就好了...

我错过了什么?我应该检查什么?

谢谢!

那是因为 MacOS X 桌面应用程序实际上是目录。可执行文件被埋在里面。

这个有效:

subprocess.Popen(['/Applications/Calculator.app/Contents/MacOS/Calculator'])

这是一个更简单的调用:

subprocess.Popen(['open', '-a', 'Calculator'])

-a 选项告诉 open Calculator 是一个应用程序。