Python setuptools的目的是什么?

34

setuptools 是 Python 中一个重要的工具,它用于打包和分发 Python 代码。如果您没有安装或更新 setuptools 会怎样呢?可能会导致某些库无法正确地安装和使用。

虽然您已经阅读了相关文档,但是没有找到答案。


3
好的,我会尽力为您翻译这个链接中的内容。以下是翻译的结果:Setuptools 是一个 Python 模块,它提供了一些工具来构建和发布 Python 包。它可以帮助您管理包依赖、打包您的代码以及与其他开发人员分享您的软件。使用 Setuptools,您可以轻松地将自己的软件打包成一个容易安装的包,并将其上传到 PyPI 供其他人下载。Setuptools 是 Distutils 的增强版,它使 Python 包的分发变得更加容易和灵活。除了提供 Distutils 中的大多数功能之外,Setuptools 还添加了许多新功能,例如支持“entry points”(定义 Python 包中的可执行程序或插件)和自动安装依赖项。此外,Setuptools 还支持创建“命令行脚本”,这些脚本可以在安装包时安装到用户的 PATH 中,从而使您的软件更易于使用。总之,Setuptools 是一个强大的工具,可以让 Python 开发人员更轻松地构建、打包和发布他们的软件。 - Harsha Biyani
10
一般来说,它们有助于在它们之间制造混淆,如 easy_install、distutils、distutils2、pip、wheels 等等,我可能会遗忘一些。有时,它们还会生成有趣的编译器错误,让你开心一下,但最好的情况是它们会添加一些内容到 pth 文件中,在背后破坏搜索路径。 - Matteo Italia
2个回答

43

setuptools 是一个用于管理安装源代码的包,很多其他包都使用它(以及与其相关的任务)。

通常它广泛地用于非纯 Python 包,这些包需要在可用之前进行一些编译/安装步骤(想想包含用 C 编写的扩展的包);setuptools 将此过程中最常用的一些操作(使用与当前 Python 安装兼容的选项编译 C 文件、如果需要运行 Cython、为 setup.py 文件提供一些模糊的命令/选项等)以及在 Python 包开发期间使用的一些工具拆分出来。

distutils、distutils2 (?) 和其他一些设置工具包似乎存在某种重叠;老实说,这是 Python 生态系统中相当混乱的部分。

如果你:

  • 不开发 Python 包;
  • 仅安装二进制或纯 Python 包;
  • 只通过高级安装程序(如 pip、easy_install 或您的发行版软件包管理器)安装软件,并且您非常幸运

通常无需担心 setuptools - 要么它真的不需要,要么高级安装程序将确保您安装了足够新的版本;在后一种情况下,只要它们需要执行的操作足够简单,它们通常不会失败。

否则,不幸的是,您将花费一些有趣的时间来尝试了解是谁在 setup.py 和编译器之间添加命令行开关,使编译失败,或者搞砸包含路径,或者期望库在不同的路径中,或者误检测编译器,或者尝试将东西安装到错误的路径中,或以上任何组合。


0
Setuptools是一个包开发过程库,旨在通过增强Python标准库distutils(分发工具)来促进Python项目的打包。

Wikipedia

如果您正在创建和分发Python软件包,那么Setuptools非常有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接