簡體   English   中英

python子進程:如何在OS X上運行應用程序?

[英]python subprocess: how to run an app on OS X?

我正在將Windows應用程序移植到OS X 10.6.8。 對我來說,這是一個新平台,我面臨一些困難。

該應用程序是一個小型Web服務器(bottle + waitress),由於子進程調用,該服務器正在啟動瀏覽器(基於Chrome嵌入式框架)。

瀏覽器是一個應用程序文件,從gui啟動時可以正常運行。

我以這種方式啟動它:

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

不幸的是,此操作失敗,並顯示OSError: permission denied

我試圖用sudo運行腳本,結果類似。

我可以使用以下命令從外殼啟動應用程序:

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.

任何想法如何解決此問題?

文件cefclient.app實際上是目錄(特別是應用程序捆綁包 ),而不是應用程序可執行文件。 真正的可執行文件位於軟件包內部,其路徑類似於Contents/MacOS/executable_name 因此,要啟動它,您可以這樣做:

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

或者,

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

僅取決於您是否要控制stdin / stdout或啟動應用程序是否足夠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM