python子进程:如何在OS X上运行应用程序?

2024-04-24 23:52:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将一个windows应用程序移植到OS X 10.6.8。这对我来说是一个新的平台,我面临着一些困难。

应用程序是一个小型web服务器(bottle+waitress),它通过一个子进程调用启动一个浏览器(基于chromium嵌入式框架)。

浏览器是一个应用程序文件,从gui启动时运行正常。

我是这样发起的:

subprocess.Popen([os.getcwd()+"/cef/cefclient.app", '--url=http://127.0.0.1:8100'])

不幸的是,这在OSError: permission denied中失败。

我试着用一个sudo运行脚本,得到了类似的结果。

我可以使用以下命令从shell启动应用程序:

open -a "cef/cefclient.app" --args --url-http://127.0.0.1:8100

但是

subprocess.Popen(['open', '-a', os.getcwd()+'/cef/cefclient.app', '--args', '--url-http://127.0.0.1:8100'])

失败,出现以下错误

FSPathMakeRef(/Users/.../cefclient.app) failed with error -43.

知道怎么解决这个问题吗?


Tags: app应用程序httpurloswindowsargs浏览器
2条回答

或者

os.system('open -a "cef/cefclient.app" --args --url-http://127.0.0.1:8100')

这取决于你是否想控制stdin/stdout或者启动应用程序是否足够。

文件cefclient.app实际上是一个目录(特别是application bundle),而不是应用程序可执行文件。真正的可执行文件位于包内,路径类似于Contents/MacOS/executable_name。因此,要启动它,您需要执行以下操作:

subprocess.Popen([os.getcwd()+"/cef/cefclient.app/Content/MacOS/executable_name",
                  "--url=http://127.0.0.1:8100"])

相关问题 更多 >