我的用户应该如何为Mac安装Python命令行应用程序?

我的用户应该如何为Mac安装Python命令行应用程序?,python,objective-c,macos,command-line,Python,Objective C,Macos,Command Line,我想创建一个命令行应用程序,它将在MacOSX终端上运行,并最终在其他平台上运行 我可以编写Python脚本并在终端上运行,等等,但问题是用户。我想让用户下载应用程序,然后像平常一样安装,然后直接在终端中键入appname来调用应用程序 我该怎么办?我是否需要将Python文件包装在某种Objective-C迷你应用程序中并安装它 谢谢 试试这些: 试试这些: 除了BundleBuilder和py2app之外,我还想提一下。它是跨平台的,似乎比py2app更好地支持一些大型软件包,例如PyQT和

我想创建一个命令行应用程序,它将在MacOSX终端上运行,并最终在其他平台上运行

我可以编写Python脚本并在终端上运行,等等,但问题是用户。我想让用户下载应用程序,然后像平常一样安装,然后直接在终端中键入appname来调用应用程序

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

谢谢

试试这些:

试试这些:


除了BundleBuilder和py2app之外,我还想提一下。它是跨平台的,似乎比py2app更好地支持一些大型软件包,例如PyQT和matplotlib。

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

对于Mac OS X上的简单命令行应用程序,您不需要将其打包为OS X应用程序包,这正是py2app和不推荐使用的BundleBuilder所做的。应用程序包不是访问命令行实用程序的正常方式,因为用户必须进入并执行包中的某些内容。如果您的应用程序中没有第三方C库依赖项,最简单的方法可能是将其打包为带有setup.py的标准Distutils发行版。由于苹果在最近的OS X版本中提供Python和setuptools版本,因此如果您将应用程序上载到,用户可以在终端窗口中通过一个命令下载并安装您的应用程序:

sudo easy_install your_app_name
默认情况下,这将把脚本安装到/usr/local/bin中,它包含在OSX用户shell的默认路径中。如果您不想将其上传到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到应用程序包中相应脚本文件的符号链接。但是,这样做的缺点是使应用程序包路径依赖于位置。如果必要的话,还有其他更复杂的方法可以在没有限制的情况下完成类似的操作。

对于Mac OS X上的简单命令行应用程序,您不需要将其打包为OS X应用程序包,py2app和不推荐使用的BundleBuilder就是这样做的。应用程序包不是访问命令行实用程序的正常方式,因为用户必须进入并执行包中的某些内容。如果您的应用程序中没有第三方C库依赖项,最简单的方法可能是将其打包为带有setup.py的标准Distutils发行版。由于苹果在最近的OS X版本中提供Python和setuptools版本,因此如果您将应用程序上载到,用户可以在终端窗口中通过一个命令下载并安装您的应用程序:

sudo easy_install your_app_name
默认情况下,这将把脚本安装到/usr/local/bin中,它包含在OSX用户shell的默认路径中。如果您不想将其上传到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到应用程序包中相应脚本文件的符号链接。这有maki的缺点
不过,正在禁用应用程序束路径依赖于位置。如果必要的话,还有其他更复杂的方法可以在没有限制的情况下执行类似操作。

我不建议使用sudo easy\u install命令。您无法卸载它,它会绕过您正在使用的任何包管理器。如果你必须这样做,你至少应该使用virtualenv。Mac OS X上没有系统Python的软件包管理器。很清楚,是的,还有其他更好的更通用的解决方案,如virtualenv和pip,但它们不是预装在OS X上的;easy_install确实可以,对于一个简单的命令行脚本应用程序来说,这可能就足够了。也许是pip而不是easy_install。至少有一个卸载选项。我不建议使用sudo easy\u install命令。您无法卸载它,它会绕过您正在使用的任何包管理器。如果你必须这样做,你至少应该使用virtualenv。Mac OS X上没有系统Python的软件包管理器。很清楚,是的,还有其他更好的更通用的解决方案,如virtualenv和pip,但它们不是预装在OS X上的;easy_install确实可以,对于一个简单的命令行脚本应用程序来说,这可能就足够了。也许是pip而不是easy_install。至少有一个卸载选项。请注意,BundleBuilder已弃用,并已在Python 3中删除。请注意,BundleBuilder已弃用,并已在Python 3中删除。