【发布时间】:2012-10-15 20:20:14
【问题描述】:
我正在将一个 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.
知道如何解决这个问题吗?
【问题讨论】:
-
os.getcwd()+'cef/cefclient.app'看起来不对。对我来说,getcwd()没有添加斜杠。os.path.join(os.getcwd(), 'cef/cefclient.app')可能会让你的运气更好 -
您确定打开后需要 -a 吗?我相信只有当您尝试“打开”一个文档并且需要提供用于打开该文档的应用程序的名称时,您才需要这样做。
-
正确的 / 在 getcwd 之后丢失。无论如何,命令仍然失败
标签: python macos osx-snow-leopard subprocess