Python-为什么要在easy_install上使用pip?

发布于 2021-02-02 23:20:30

为什么要在easy_install上使用pip?难道不是PyPI和程序包作者最主要的原因吗?如果作者将废话源tarball(例如:丢失的文件,没有setup.py)上传到PyPI,则pip和easy_install都会失败。除了外观上的差异外,为什么Python的人(如上述推文中)似乎强烈青睐pip而不是easy_install

(假设我们正在谈论由社区维护的Distribute软件包中的easy_install

关注者
0
被浏览
144
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    这里的许多答案在2015年已经过时了(尽管丹尼尔·罗斯曼最初接受的答案不是)。这是当前的状态:

    现在,二进制程序包以轮子(.whl文件)的形式分发-不仅在PyPI上,而且在第三方存储库中,例如Christoph Gohlke的Windows Extension Packages。pip可以处理轮子;easy_install不能。
    虚拟环境(由3.4内置,或可以通过添加到2.6 + / 3.1 + virtualenv)已经成为一个非常重要和突出的工具(并在官方文档中推荐);它们包括pip开箱即用,但甚至无法正常使用easy_install
    distribute包含的软件包easy_install不再维护。其改进已setuptools合并回setuptools。尝试安装distribute只会安装setuptools
    easy_install 本身只是准维护的。


    pip从前不如easy_install从解压后的源代码树,DVCS存储库等进行安装的所有情况都已一去不复返了;你可以pip install .,pip install git+https://。
    pip带有来自python.org的官方Python 2.7和3.4+软件包,pip如果你从源代码构建,则默认情况下会包含引导程序。

    《Python打包用户指南》已取代了有关安装,使用和构建软件包的各种文档的不完整之处。Python自己的有关安装Python模块的文档现在遵照该用户指南,并明确地pip称为“首选安装程序”。
    pip这些年来,还添加了其他新功能,这些功能将永远不会存在easy_install。例如,pip通过构建需求文件,然后在每一侧使用单个命令安装它,可以轻松克隆站点程序包。或将你的需求文件转换为本地回购以用于内部开发。等等。

    我知道easy_install在2015年使用的唯一好的理由是在OS X 10.5-10.8中使用Apple预先安装的Python版本的特殊情况。从10.5开始,Apple已包含easy_install,但从10.10开始,它们仍然不包含pip。使用10.9+时,你仍然应该只使用get-pip.py,但是对于10.5-10.8,这存在一些问题,因此更容易实现sudo easy_install pip。(通常,这easy_install pip是一个坏主意;你只想在OS X 10.5-10.8上才能做到这一点。)此外,10.5-10.8包含readline以一种easy_install知道如何纠缠而pip不会纠缠的方式,因此你也想sudo easy_install readline如果要升级。



  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。


    pip最初旨在通过以下方式对easy_install进行改进

    • 在安装之前,所有软件包都已下载。结果不会发生部分完成的安装。
    • 注意在控制台上显示有用的输出。
    • 采取行动的原因被跟踪。例如,如果正在安装软件包,则pip会跟踪为什么需要该软件包。
    • 错误消息应该很有用。
    • 该代码相对简洁明了,具有内聚性,可以更轻松地以编程方式使用。
    • 软件包不必作为Egg存档安装,可以将它们平放安装(同时保留Egg元数据)。
    • 对其他版本控制系统(Git,Mercurial和Bazaar)的本地支持
    • 卸载软件包。
    • 简单地定义固定的需求集并可靠地复制一组包。
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看