我已经成功地使用Py2app冻结了一个基于python的GUI脚本,但是我在Mac上使用这个应用程序时遇到了麻烦。这个应用程序应该发送参数/参数给集群,一个基于终端的应用程序,但它返回一个错误非零退出状态127,'/bin/sh: Clustal :命令未找到‘。
我发现当我从Frozen_apl.app>Contents>MacOS>Frozen_apl (这是一个UNIX可执行文件)执行同一个应用程序时,冻结的应用程序可以成功地发送shell命令。
为什么这些shell命令在直接从app传递时会被阻塞?我怎样才能解决这个问题?
注意:集群已正确安装,其路径已正确设置。我使用OSX10.9。我为Ubuntu和Windows冻结了相同的脚本,它们运行得很好。
发布于 2015-02-12 02:30:17
引用Py2app 0.6.4次要特性发行版:
问题15: py2app现在可以通过打开终端中的窗口来模拟shell环境。 用法:
python setup.py py2app --emulate-shell-environment这个选项是实验性的,还远不能确定该实现是否适用于所有系统。
使用此选项结合Py2app解决了Py2app冻结应用程序与Os之间通信阻塞的问题。
发布于 2015-02-11 21:20:17
根据注释中的讨论--这不是参数的问题,这是由于生成的shell无法找到clustal可执行文件。我不知道为什么会这样,因为它在/usr/local/bin/clustal中,而且/usr/local/bin在OS的默认路径中(在/etc/ PATH中列出)。使用可执行文件的完整路径工作,因此冻结的应用程序似乎正在生成一个具有非默认路径的shell。
将完整的路径(/usr/local/bin/clustal)包含在冻结的应用程序中并不是真正的最佳解决方案;更好的方法是在生成的shell中找到一个正常路径。但是我现在对Py2app已经足够熟悉了,我知道如何做到这一点。(JeeYem:请给出你在评论或其他回复中提出的解决办法。)
https://stackoverflow.com/questions/28444173
复制相似问题