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

标签 python py2app

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

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

  2. .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/

相关文章:

python - py2app 无法与 MySQLdb 一起使用

python - 有没有什么办法可以让用户使用终端(无 GUI)的 Python 程序成为 Mac 的独立程序?

osx-mountain-lion - Mac Mountain Lion 错误 - fPermittedFrontASN 中的 "isn' t"

python - 如何使用 beautifulSoup 从网站中提取和下载所有图像?

python - tkinter py2app 应用程序不会关闭

python - Sprite 向左移动的速度比向右移动的快

python - Matplotlib:在子图网格中重新定位子图

python - 如何将 py2app 与 Anaconda python 一起使用?

python - Pycharm 在使用 Python 的 pytest 框架进行测试时为测试生成奇怪的代码模板

python - 尝试改编 TensorFlow 的 MNIST 示例给出 NAN 预测