【问题标题】:How should my users install a Python command line app for Mac?我的用户应该如何为 Mac 安装 Python 命令行应用程序?
【发布时间】:2011-12-17 09:53:54
【问题描述】:

我想创建一个命令行应用程序,它可以从 Mac OS X(以及最终其他平台)上的终端运行。

我可以制作 Python 脚本并让它在终端等中运行,但问题出在用户身上。我希望用户像往常一样下载并安装该应用程序,然后通过直接在终端中输入“appname”来调用该应用程序。

我该怎么做呢?我是否需要将我的 Python 文件包装在某种 Objective-C 迷你应用程序中并安装它?

谢谢!

【问题讨论】:

    标签: python objective-c macos command-line


    【解决方案1】:

    对于 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 和使用它的更高级别工具(pipDistributesetuptools 等)是跨平台的,您可能不需要做任何事情来支持在大多数其他 Unix 上安装-y 分布。

    另一方面,如果您的应用程序具有特定于 Python 版本的依赖项或具有第三方库依赖项,并且您需要支持多个 OS X 版本,这样您就无法使用 Apple 提供的 Python,那么最好使用使用 py2app 并捆绑特定于应用程序的 Python 副本。在这种情况下,也许您可​​以让用户双击下载的应用程序包,这将运行一个脚本来进行身份验证并创建一个从/usr/local/bin 到应用程序包中适当脚本文件的符号链接。但是,这具有使应用程序包路径位置依赖的缺点。如有必要,还有其他更复杂的方法可以在没有限制的情况下执行类似的操作。

    【讨论】:

    • 我不推荐sudo easy_install 命令。您无法卸载它,它会绕过您正在使用的任何包管理器。如果你必须这样做,你至少应该使用 virtualenv。
    • Mac OS X 上系统 Python 没有包管理器。
    • 明确地说,是的,还有其他更好的更通用的解决方案,如virtualenvpip,但它们没有预装在 OS X 上; easy_install 确实如此,对于一个简单的命令行脚本应用程序来说,这可能就足够了。
    • 也许是pip 而不是easy_install。至少有一个卸载选项。
    【解决方案2】:

    除了 BundleBuilder 和 py2app 我想我会提到PyInstaller。它是跨平台的,似乎比 py2app 更好地支持一些大型包(例如 PyQT 和 matplotlib)。

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 请注意,BundleBuilder 已被弃用,并已在 Python 3 中删除。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多