0

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

该应用程序是一个小型网络服务器(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.

知道如何解决这个问题吗?

4

2 回答 2

5

该文件cefclient.app实际上是一个目录(特别是应用程序包),而不是应用程序可执行文件。真正的可执行文件位于包内,路径类似于Contents/MacOS/executable_name. 所以要启动它,你会这样做:

subprocess.Popen([os.getcwd()+"/cef/cefclient.app/Content/MacOS/executable_name",
                  "--url=http://127.0.0.1:8100"])
于 2012-10-25T15:40:53.743 回答
1

或者,

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

仅取决于您是要控制标准输入/标准输出还是启动应用程序就足够了。

于 2012-10-25T15:45:38.820 回答