小编典典

distribute、distutils、setuptools 和 distutils2 之间的区别?

all

情况

我正在尝试将一个开源库移植到 Python 3。(如果有人想知道,SymPy 。)

因此,在为 Python 3 构建时,我需要2to3自动运行。为此,我需要使用distribute. 因此,我需要移植当前系统,(根据
doctest)是distutils.

问题

不幸的是,我不确定这些模块之间的区别是什么distutilsdistribute
setuptools文档最好是粗略的,因为它们似乎都是彼此的一个分支,旨在在大多数情况下(但实际上,并非全部)兼容——等等。

问题

有人可以解释这些差异吗?
我应该用什么?什么是最现代的解决方案?(顺便说一句,我也很欣赏一些关于移植到的指南Distribute,但这有点超出了问题的范围——)


阅读 99

收藏
2022-03-06

共1个答案

小编典典

截至 2020 年 3 月,这个问题的大多数其他答案都已经过时了好几年。当您遇到有关 Python
打包问题的建议时,请记住查看发布日期,不要相信过时的信息。

Python
打包用户指南
值得一读。每个页面都显示了“最后更新”日期,因此您可以查看手册的新近度,并且非常全面。它托管在
Python 软件基金会的 python.org
子域上的事实只是增加了对它的信任。项目摘要页面在这里特别重要。

工具总结:

以下是 Python 打包环境的总结:

支持的工具:

已弃用/废弃的工具:

  • distribute 是一个叉子setuptools。它共享相同的命名空间,因此如果您安装了 Distribute,import setuptools实际上会导入使用 Distribute 分发的包。 Distribute 已合并回 Setuptools 0.7 ,因此您不再需要使用 Distribute。其实Pypi上的版本只是安装了Setuptools的兼容层。

  • distutils2 是一次尝试充分利用distutilssetuptoolsdistribute成为 Python 标准库中包含的标准工具。这个想法是distutils2为旧的 Python 版本分发,然后distutils2将其重命名packaging为 Python 3.3,将其包含在其标准库中。然而,这些计划并没有按预期进行,目前 distutils2 是一个废弃的项目。最新版本是在 2012 年 3 月,它的 Pypi 主页终于更新以反映它的死亡。

其他:

还有其他工具,如果您有兴趣,请阅读Python
打包用户指南中的项目摘要。我不会将它们全部列出,也不会重复该页面,并保持答案与问题相匹配,该问题仅是关于distribute,distutils和.setuptools``distutils2

推荐:

如果所有这些对您来说都是新的,并且您不知道从哪里开始,
我建议您学习setuptools,以及pipvirtualenv,它们可以很好地协同工作。

2022-03-06