首页 > Python > Python 中 distribute、distutils、setuptools 和 distutils2 之间的区别?

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

上一篇 下一篇

A. 情况

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

因此,我需要在构建 Python 3 时自动运行。为此,我需要使用 .因此,我需要移植当前系统,它(根据文档测试)是.2to3distributedistutils

 

问题所在

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

 

问题

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

分割线

网友回答:

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

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

工具摘要:

以下是 Python 打包格局的摘要:

支持的工具:

  • setuptools的开发是为了克服Distutils的局限性,并且不包含在标准库中。它引入了一个名为 的命令行实用程序。它还引入了可以在脚本中导入的 Python 包,以及可以在代码中导入以查找随发行版一起安装的数据文件的 Python 包。它的一个缺点是它修补了Python包。它应该与 配合使用。它看到定期发布。easy_installsetuptoolssetup.pypkg_resourcesdistutilspip
    • 官方文档 |皮皮页面 |GitHub 存储库 |Python 包用户指南的设置工具部分
  • scikit-build是一个改进的构建系统生成器,它在内部使用CMake来构建编译的Python扩展。因为scikit-build不是基于distutils的,所以它没有任何限制。当存在ninja-build时,scikit-build可以编译大型项目,速度是替代方案的三倍以上。它应该与 配合使用。pip
    • 官方文档 |皮皮页面 |GitHub 存储库 |Python 包用户指南的 scikit-build 部分
  • Distlib 是一个库,它提供由更高级别的工具(如 )使用的功能。pip
    • 官方文档 |皮皮页面 |位桶存储库 |Python 包用户指南的 distlib 部分
  • 打包也是一个库,提供更高级别工具使用的功能,例如pipsetuptools
    • 官方文档 |皮皮页面 |GitHub 存储库 |Python 包用户指南的打包部分

已弃用/废弃的工具:

  • distutils仍然包含在Python的标准库中,但从Python 3.10开始被认为是不推荐使用的。它对于简单的Python发行版很有用,但缺乏功能。它介绍了可以在脚本中导入的 Python 包。distutilssetup.py
    • 官方文档 |Python 包用户指南的 distutils 部分
  • 分发是 的一个分支。它共享相同的命名空间,因此如果您安装了 Distribute,实际上将导入使用 Distributed 分发的包。Distributed 已合并回 Setuptools 0.7,因此您不再需要使用 Distribution。实际上,Pypi上的版本只是一个安装Setuptools的兼容层。setuptoolsimport setuptools
  • distutils2 试图充分利用 ,并成为 Python 标准库中包含的标准工具。这个想法是,它将为旧的Python版本分发,并将其重命名为Python 3.3,这将包含在其标准库中。然而,这些计划并没有按预期进行,目前,distutils2是一个被遗弃的项目。最新版本是在2012年<>月,其Pypi主页终于更新以反映其死亡。distutilssetuptoolsdistributedistutils2distutils2packaging

别人:

还有其他工具,如果您有兴趣,请阅读 Python 打包用户指南中的项目摘要。我不会一一列出,不重复该页面,并保持答案与问题相匹配,问题只是关于、和。distributedistutilssetuptoolsdistutils2

建议:

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

如果您正在研究 ,您可能会对这个问题感兴趣:、、、、 等之间有什么区别?(是的,我知道,我和你一起呻吟。virtualenvvenvpyvenvpyenvvirtualenvvirtualenvwrapper

分割线

网友回答:

我是一个distutils维护者和distutils2/打包贡献者。我在ConFoo 2011上做了一个关于Python打包的演讲,现在我正在编写它的扩展版本。它尚未发布,因此以下是有助于定义事物的摘录。

  • Distutils是用于包装的标准工具。它适用于简单的需求,但有限且扩展起来并不微不足道。
  • Setuptools是一个诞生于填补缺失的distutils功能并探索新方向的项目。在某些子社区,这是一个事实上的标准。它使用猴子补丁和魔法,这是Python核心开发人员所不赞成的。
  • Distributed是Setuptools的一个分支,由开发人员开始,认为其开发速度太慢并且无法发展。当distutils2由同一组启动时,它的发展速度大大减慢。2013 年 <> 月更新:分发合并回安装程序工具并停止使用。
  • Distutils2 是一个新的 distutils 库,最初是 distutils 代码库的一个分支,其好的想法来自设置工具(其中一些在 PEP 中进行了彻底讨论),以及受 pip 启发的基本安装程序。用于导入 Distutils2 的实际名称是打包在 Python 3.3+ 标准库中,或 distutils2 打包在 2.4+ 和 3.1–3.2 中。(向后移植即将推出。Distutils2没有发布Python 3.3版本,因此被搁置。

更多信息:

  • Distutils的命运 – Pycon峰会+包装冲刺详细报告
  • Distutils 和 Distutils 之间的快速差异2

我希望尽快完成我的指南,它将包含有关每个图书馆的优点和缺点的更多信息以及过渡指南。

分割线

网友回答:

注意:答案已弃用,分发现已过时。自从 Python 打包管理局成立以来,这个答案不再有效,并且已经做了很多清理工作。


是的,你明白了。? 我认为此时首选的软件包是 Distribute,它是 setuptools 的一个分支,它是 distutils(原始打包系统)的扩展。安装工具没有得到维护,所以被分叉并重命名,但是在安装时它使用安装工具的包名称!我认为大多数Python开发人员现在都使用Distribute,我可以肯定地说我这样做了。

模板简介:该模板名称为【Python 中 distribute、distutils、setuptools 和 distutils2 之间的区别?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Python】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 733次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 04-21
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
单页式简历模板 微信公众平台 微信图片 自适应 微信文章 微信素材 响应式 微信模板 企业网站 html5
您可能会喜欢的其他模板