bgc*_*ode 46 python pip setuptools distribute
我一直在通过"学习Python艰难之路"(第2版)这本书教自己.在练习46中,它告诉我阅读Pip,Distribute和其他一些软件包.
pip的文档很清楚.它允许我安装/卸载和升级包.阅读文档以进行分发,它基本上似乎做同样的事情:
轻松下载,构建,安装,升级和卸载Python包
点子和分发之间有什么区别,它们如何相互关联?
Ned*_*ily 77
[ 2014-10 TL; DR:
distribute
已死,使用pip
,新的setuptools
,以及,对于二进制分发,wheels
.更多信息如下.]
[原始答案]
分发 是是旧版setuptools的一个分支,所以几乎所有注释都适用于Distribute和setuptools.Setuptools试图在更老的Python标准库包Distutils中填补许多漏洞.Setuptools增加了诸如通过命令行界面自动下载软件包easy_install
以及某种级别的依赖关系管理等功能.然而,Python社区的一个部分认为setuptools太具有侵入性,并且对于它的某些功能有太多的幕后魔术.
pip
是setuptools或Distribute之上的更高级别的界面.它使用它们来执行它的许多功能,但避免了一些更有争议的功能,比如拉链蛋. pip
还提供了不可用的功能setuptools
,例如卸载命令和定义固定需求集并可靠地重现一组包的功能.还有一个更完整的功能比较这里.
为什么会有这么多组件(还有更多组件buildout
)?有很多原因:解决方案必须适用于支持Python的所有主要平台(即Unix-y,Windows,Mac OS X),因此构建和安装会出现一系列复杂问题; 像许多开源项目一样,Python基本上都是志愿者,许多开发人员对包装和安装问题并不感兴趣.关于在标准库中添加主要的新未经证实的功能,存在一种自然的保守主义; 意见分歧等
目前,正在进行一个项目,为Distutils提供替代品,并可能为一些更高级别的附加组件提供替代品.它计划在Python 3.3标准库中作为packaging
包发布,并作为旧版Python的附加组件发布Distutils2
.
总而言之,目前的关系是:
pip -> [ setuptools | Distribute ] -> Distutils -> Python core
|
3rd party packages | included in Python
|
Run Code Online (Sandbox Code Playgroud)
更新(2012-07):在Python 3.3的功能代码截止之前,已经确定packaging
尚未准备好在标准库中发布,因此它已从3.3版本中删除.将继续Distutils2
通过PyPI以及Python 3.4标准库中包含的内容开展工作.
更新(2014-10):自从这个答案最后更新以来,Python包装世界发生了进一步的变化.
最重要的是,自2013年中期,之间的裂痕setuptools
,并
distribute
已痊愈和开发活动已经合并成一个新的setuptools
项目. distribute
现已弃用,不再维护; 使用new setuptools
而不是使用它easy_install
作为安装程序.
pip
已成为虚拟环境(virtualenv
或pyvenv
)内部或外部的事实上和祝福的安装程序工具(对于平台的软件包管理器不提供的Python软件包).
而不是旧的setuptools
bdist eggs
,wheels
已成为Python包的祝福二进制分发格式.
对于Python 3.4的,一个版本pip
与wheel
支持,现随官方python.org
二进制安装程序和源代码包,并预计pip
也将包括在Python 2.7版的一个维护版本(2.7.9).
Distutils2
而packaging
现在处于休眠状态.
有关Python 3文档的新Distributing Python Modules部分和新Python包装用户指南的更多详细信息.
归档时间: |
|
查看次数: |
7262 次 |
最近记录: |