我使用 py2app 从 python 脚本创建了 .app 包。问题有两个:
参数模拟似乎无法正常工作,因为它不接受适用于原始 Python 脚本的参数。
.app bundle 格式需要通过“open”打开。 “open”仅支持从 OSX 10.6 及更高版本传递参数,并且我需要对早期 OSX 版本的支持。
为 OSX 制作可以接受命令行参数的卡住二进制文件的正确方法是什么?
最佳答案
一般来说,OS X 应用程序包并非设计为从命令行启动并从命令行传递参数(正如您所注意到的,OS X 10.6 添加了对此的一些支持)。将文件传递到应用程序的标准机制是通过 Apple Events ;这用于 Finder 对文档文件(其类型由应用程序处理)的打开
命令,或者将文件拖放到 Dock 中的应用程序图标上时使用。 py2app
旨在打包将像标准 Mac GUI 应用程序一样使用的应用程序,特别是使用启动协议(protocol)并通过 Apple Events 接收文件。它并不是为了生成命令行实用程序而设计的。如果您要打包的是后者,只需使用正常的 Distutils method of packaging 。或者,如果您的脚本仅包含一个文件,您可以将其设为独立的 shebang 脚本,如 here 中所述。 .
另请注意,虽然在 OS X 上需要作为成熟的应用程序运行才能使用某些 GUI 界面,但 OS X 上的 Python 本身通常安装在框架中并从 Python.app
安装在框架内的 bundle 。 (对于 Apple 提供的 Python、由 python.org
安装程序安装的 Python 以及 MacPorts
安装的 Python 来说,情况都是如此。)当脚本由其中之一运行时 Python 框架,它们被 OS X 识别为 GUI 应用程序,无需构建自己的应用程序包。
关于python - 为 OSX 制作可以接受参数的 Python 卡住二进制文件的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4586501/