发行版,distutils,setuptools和distutils2之间的区别?
|
情况
我正在尝试将开放源代码库移植到Python3。(SymPy,如果有人想知道的话。)
因此,在为Python 3构建时,我需要自动运行ѭ0。为此,我需要使用
distribute
。因此,我需要移植当前的系统(根据doctest)为distutils
。
问题
不幸的是,我不确定这两个模块(distutils
,distribute
,setuptools
)有什么区别。该文档最好是粗略的,因为它们似乎是彼此的一个分支,旨在在大多数情况下兼容(但实际上不是全部)……等等。
问题
有人可以解释差异吗?我应该用什么?什么是最现代的解决方案? (顺便说一句,我也很感谢您提供一些移植到Distribute
的指南,但这超出了问题的范围……)
没有找到相关结果
已邀请:
5 个回复
帆攀缺锯欧
脚本中导入的
Python软件包。 官方文档| Python软件包用户指南的“ 2”部分 Setuptools是为克服Distutils的限制而开发的,它不包含在标准库中。它引入了一个名为“ 10”的命令行实用程序。它还介绍了可以在
脚本中导入的ѭ5Python软件包,以及可以在代码中导入以查找随发行版一起安装的数据文件的files13ѭPython软件包。它的陷阱之一是它对
Python程序包进行了猴子修补。
应该可以很好地工作。它可以看到常规版本。 官方文档| Pypi页面| GitHub存储库| Python软件包用户指南的第5部分 scikit-build是一个改进的构建系统生成器,它内部使用CMake来构建编译的Python扩展。由于scikit-build不是基于distutils的,因此它实际上没有任何限制。如果存在ninja-build,则scikit-build可以比其他方法快三倍地编译大型项目。
应该可以很好地工作。它可以看到常规版本。 官方文档| Pypi页面| GitHub回购 弃用/废弃的工具: Distribute是Setuptools的一个分支。它共享相同的名称空间,因此如果您安装了Distribute,则
实际上会导入随Distribute分发的软件包。 Distribute被合并回Setuptools 0.7,因此您不再需要使用Distribute。实际上,Pypi上的版本只是安装Setuptools的兼容层。 Distutils2试图充分利用Distutils,Setuptools和Distribute,并成为Python标准库中包含的标准工具。想法是将Distutils2分发给旧的Python版本,并且将Distutils2重命名为3.319ѭ(对于Python 3.3),并将其包含在其标准库中。这些计划没有按预期进行,但是,当前,Distutils2是一个废弃的项目。最新版本于2012年3月发布,其Pypi主页最终已更新以反映其死亡。 Alpha软件: Distlib是旨在实现以前工具功能的子集的工具,但仅实现公认的PEP中定义非常明确的功能。它是PyPA(Python打包机构)的工具之一,希望有朝一日最终将其包含在Python标准库中。它仍然被认为是alpha软件,因此最终用户要当心。 官方文档| Pypi页面| Bitbucket回购| Python软件包用户指南的第20部分 还有更多工具(例如Bento),但我不会提及它们,因为它们对于本答案过分模糊,利基,太早或尚未开发,否则它们不是直接的替代品。 建议: 因此,总而言之,在所有这些选项中,我建议使用Setuptools,除非您的要求非常基本并且只需要Distutils。 Setuptools与Virtualenv和Pip(我强烈推荐的工具)配合使用非常好。 Virtualenv和Pip都可以被认为是官方的,因为它们是PyPA的一部分,并且Python 3现在已经发行
(这可以帮助您在某些系统上安装
)。 如果您正在研究Virtualenv,您可能会对以下问题感兴趣:
,
,
,
,
等之间有什么区别? (是的,我知道,我和你一起吟。) 附带说明一下,我建议使用Virtualenv 1.10或更高版本,因为它是第一个可识别适用于Python 2和3的Setuptools / Distribute合并的版本。
屑凉赦
,在2.4+和3.1-3.2中是
。 (将很快提供一个反向端口。)Distutils2并未发布Python 3.3版本,因此被搁置了。 更多信息: Distutils的命运– Pycon峰会+ Packaging Sprint详细报告 Distutils和Distutils2之间的快速区别 我希望很快完成我的指南,它将包含有关每个图书馆的优缺点的更多信息以及过渡指南。
魄龟呸筹
荆怖赡
锑寝粒
将使用不同版本的Python创建两个(\“ py34 \”或\“ py26 \”)Python环境。 之后,您可以使用以下特定版本的Python调用环境:
在您必须处理不同版本的Python的情况下,此功能似乎特别有用。 此外,conda具有以下功能: 不可知的Python 跨平台 无需管理员权限 智能依赖性管理(通过SAT求解器) 很好地处理了您可能必须链接的C,Fortran和系统级库 如果您身处科学计算领域,那么最后一点尤其重要。