簡體   English   中英

從Mac中的App將Shell命令傳遞到終端應用程序

[英]Passing shell command to a terminal application from an App in Mac

我已經成功使用Py2app凍結了基於python的GUI腳本,但是在Mac上使用此應用程序時遇到了麻煩。 該應用程序應該將參數/參數發送到基於終端的應用程序Clustal,但它返回錯誤非零退出狀態127,“ / bin / sh:clustal:not found”

我發現當我從Frozen_apl.app>內容> MacOS> Frozen_apl (這是UNIX可執行文件)執行同一應用程序時,凍結的應用程序可以成功發送shell命令。

當這些Shell命令直接從應用程序傳遞時,為什么會被阻止? 我該如何解決這個問題?

注意:Clustal已正確安裝,並且其路徑已正確設置。 我使用OS X 10.9。 對於Ubuntu和Windows,我凍結了相同的腳本,它們工作得很好。

[基於對意見的討論]這是不是與參數的問題,這是由於未能找到衍生的外殼clustal可執行文件。 我不確定為什么會這樣,因為它在/ usr / local / bin / clustal中,並且/ usr / local / bin在OS X的默認PATH中(在/ etc / paths中列出)。 使用可執行文件的完整路徑,因此似乎凍結的應用程序正在生成具有非默認PATH的shell。

在凍結的應用程序中包含完整路徑(/ usr / local / bin / clustal)並不是真正的最佳解決方案。 最好弄清楚如何在生成的shell中獲得正常的PATH。 但是我現在對Py2app足夠熟悉,知道如何做到這一點。 (JeeYem:請在評論或其他答案中提供您提出的解決方法。)

引用Py2app 0.6.4次要功能發布:

問題#15:py2app現在提供了一個選項,可以通過在終端中打開一個窗口來模擬您獲得的shell環境。

用法: python setup.py py2app --emulate-shell-environment

此選項是實驗性的,並不確定該實現是否可在所有系統上正常工作。

將此選項與Py2app一起使用可解決凍結Py2app的應用程序與Os X Shell之間的通信阻塞的問題。

暫無
暫無

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

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