如何通过shell初始化脚本获得复杂python应用程序(包括自定义解释器)的自然MacOSX.app?

如何通过shell初始化脚本获得复杂python应用程序(包括自定义解释器)的自然MacOSX.app?,python,macos,bundle,.app,Python,Macos,Bundle,.app,我正在尝试为OSX集成一个复杂的python应用程序(附带一个定制的python解释器)。为了处理跨平台需求引起的一系列问题,我创建了一个.app包,指向一个shell脚本,其CFExecutable条目位于Info.plist中。这是可行的,被调用的shell脚本将启动实际的应用程序二进制文件。但是,我有以下问题: .app图标在dock上无休止地反弹,从未达到“激活”状态。我猜这是因为shell脚本没有终止。此停靠条目具有正确的“应用程序图标” 当脚本调用二进制可执行文件时,会出现一个带有

我正在尝试为OSX集成一个复杂的python应用程序(附带一个定制的python解释器)。为了处理跨平台需求引起的一系列问题,我创建了一个.app包,指向一个shell脚本,其CFExecutable条目位于Info.plist中。这是可行的,被调用的shell脚本将启动实际的应用程序二进制文件。但是,我有以下问题:

  • .app图标在dock上无休止地反弹,从未达到“激活”状态。我猜这是因为shell脚本没有终止。此停靠条目具有正确的“应用程序图标”
  • 当脚本调用二进制可执行文件时,会出现一个带有通用python图标的新Dock条目。当应用程序启动时,此图标成功启动并停止反弹
  • 当我试图通过forcequit杀死第一个Dock入口时,实际的应用程序仍然保持运行,因为它显然是由Dock上的第二个入口控制的
有没有办法让这种设置更自然地运行?我是否需要放弃shell脚本来实现objective C包装器?如果我必须使用obj-C包装器(而不是shell脚本)来生成我的应用程序,那么如何防止再次生成第二个图标

编辑:注意,我没有运行python脚本。我正在运行一个定制的python解释器。py2app不是我所需要的。

似乎很多人都成功地用于此目的


如果这对您不起作用,我熟悉的Java等价物会创建一个mach-o可执行存根来启动。你可以看看他们是怎么做的,尤其是他们的。

我解决了这个问题,事后看来,这个问题相当微不足道。在shell脚本中,我需要使用
exec
调用我的二进制文件,以便替换正在运行的bash进程(la
execve()
),而不是生成新进程。唯一的问题是,我的解释器现在将图标替换为常用图标,但我现在在dock中只有一个图标,并且表现得很自然。

不,我是手动操作的。我们的设置很复杂,我不能使用py2app。我不会发布python脚本