为OSX制作可以接受参数的Python冻结二进制文件的正确方法是什么?

时间:2011-01-03 17:03:44

标签: python py2app

我使用py2app从python脚本创建了一个.app包。问题有两个:

  1. 参数仿真似乎无法正常工作,因为它不接受适用于原始python脚本的参数。

  2. .app包格式需要通过“打开”打开。 “open”仅支持从OSX 10.6及其中传递参数,我需要支持早期的OSX版本。

  3. 为OSX制作可以接受命令行参数的冻结二进制文件的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

通常,OS X app bundle不是设计用于从命令行启动并从命令行传递参数(正如您所注意到的,OS X 10.6为此添加了一些支持)。将文件传递到应用程序的标准机制是Apple Events;这用于Finder的Open命令,文档文件的类型由应用程序处理,或者文件放在Dock中的应用程序图标上。 py2app旨在打包将像标准Mac GUI应用程序一样使用的应用程序,特别是使用启动协议和通过Apple Events接收文件。它不是为了生成命令行实用程序而设计的。如果后者是你的包装,只需使用正常的Distutils method of packaging。或者,如果您的脚本只包含一个文件,则可以将其设置为here所述的独立shebang脚本。

另请注意,虽然在OS X上运行作为一个成熟的应用程序需要使用某些GUI界面,但OS X上的Python本身通常安​​装在框架中,并在安装在内部的Python.app捆绑包内运行。框架。 (对于Apple提供的Pythons,由python.org安装程序安装的Pythons和安装了Pythons的MacPorts都是如此。)当脚本由其中一个 framework Pythons运行时,它们是被OS X识别为GUI应用程序而无需构建自己的应用程序包。

答案 1 :(得分:1)

使用pyinstaller它可以轻松地为OS X创建类似Linux的命令行二进制可执行文件。它也可以用于Linux和Windows操作系统。

我已经使用py2app和pyinstaller来做OS X可执行文件,而对我来说pyinstaller更好更容易配置。 然而,py2app也可以处理参数,甚至它创建应用程序包。所以认为你错误的构建设置。