我想创建一个命令行应用程序,该应用程序将从 Mac OS X(以及最终其他平台)的终端运行。
我可以制作 Python 脚本并让它在终端等中运行,但问题出在用户身上。我希望用户下载应用程序并像往常一样安装它,然后通过直接在终端中键入“appname”来调用应用程序。
我该怎么做?我是否需要将我的 Python 文件包装在某种 Objective-C 迷你应用程序中并安装它?
谢谢!
请您参考如下方法:
对于 Mac OS X 上的简单命令行应用程序,您不需要将其打包为 OS X 应用程序包,py2app 和已弃用的 BundleBuilder 做。应用程序包不是访问命令行实用程序的正常方式,因为用户必须“进入”并在包内执行某些操作。如果您的应用程序中没有第三方 C 库依赖项,最简单的方法可能是将其打包为带有 setup.py 的标准 Distutils 发行版。由于 Apple 在最近的 OS X 版本中提供了 Python 和 setuptools 版本,如果您将应用程序上传到 the Python Package Index, PyPI ,用户可以在终端窗口中使用一条命令下载并安装您的应用:
sudo easy_install your_app_name
默认情况下,这会将脚本安装到 /usr/local/bin 中,它包含在 OS X 用户 shell 的默认 PATH 中。如果您不想将其上传到 PyPI,您仍然可以使用 easy_install 从下载的文件或 URL 安装。您还需要考虑任何 Python 版本依赖关系,以及 Apple 在您打算支持的 OS X 版本中提供了哪些 Python。有版本特定的 easy_install-2.x 命令。
此外,因为 Distutils 和使用它的更高级别的工具(pip、Distribute、setuptools 等)是跨平台的,您可能不需要做任何事情来支持在大多数其他 Unix-y 发行版上安装。
另一方面,如果您的应用程序具有特定于 Python 版本的依赖项或具有第三方库依赖项,并且您需要支持多个 OS X 版本,这样您就不能使用 Apple 提供的 Python,那么最好使用 py2app 并捆绑一个特定于应用程序的 Python 副本。在这种情况下,也许您可以让用户双击下载的应用程序包,这将运行一个脚本来进行身份验证,并创建一个从 /usr/local/bin 到相应脚本文件的符号链接(symbolic link)应用程序包。但是,这样做的缺点是使应用程序包路径位置依赖。如有必要,还有其他更复杂的方法可以不受限制地执行类似操作。
