为什么要使用pip而不是easy_install?

39 浏览
0 Comments

为什么要使用pip而不是easy_install?

一段推特写道:

不要使用easy_install,除非你想在脸上自己扎刀。 使用pip。

为什么要使用pip而不是easy_install呢?难道不应该PyPI和软件包作者承担大部分责任吗?如果作者将烂掉的源程序压缩包上传到PyPI(例如,缺少文件、没有setup.py),那么pip和easy_install都会失败。除了一些样式上的差异,为什么像上面的推特中的Python人似乎强烈支持pip而不是easy_install呢?

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

admin 更改状态以发布 2023年5月22日
0
0 Comments

这里的很多答案都已经过时了(虽然最初被接受的答案来自Daniel Roseman没有过时)。以下是目前的情况:

  • 现在二进制包以wheels (.whl文件)的形式分发 - 不仅在PyPI上,还在第三方仓库中,比如Christoph Gohlke's Extension Packages for Windowspip可以处理wheels;easy_install则不行。
  • 虚拟环境(内置于3.4中,或者可以通过virtualenv添加到2.6+/3.1+中)已成为一个非常重要且突出的工具(在官方文档中推荐使用);他们里面已经内置了pip,但是却甚至不能完全正确地与easy_install一起工作。
  • distribute包,其中包括easy_install,已不再得到维护。 它相对于setuptools的改进已经被合并回setuptools中。 尝试安装distribute将只安装setuptools
  • easy_install本身只有被类维护者维护。
  • pip曾经不如easy_install的情况——从未解包的源树安装,从 DVCS repo 安装等——已经不存在了;可以pip install .pip install git+https://了。
  • pip随Python 2.7和3.4+官方软件包一起安装,如果从源代码构建软件包,则默认包含pip引导程序。
  • 有关安装,使用和构建软件包的各种不完整的文档已被Python Packaging User Guide替换。 Python自己的安装Python模块文档现在引用了此用户指南,并明确将pip称为“首选安装程序”。
  • 在多年的发展中,pip还添加了其他新功能,这些功能将永远不会出现在easy_install中。 例如,pip使得通过构建要求文件,然后在每个环境上使用单个命令进行安装,可以轻松克隆您的site-packages。或将您的要求文件转换为本地仓库以供内部开发使用等等。

我所知道的唯一使用easy_install的好理由是在使用OS X 10.5-10.8中的苹果预安装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包含readlineeasy_install知道如何处理,但pip则不知道,因此如果您要升级它,则需要sudo easy_install readline

0
0 Comments

从 Ian Bicking 的pip介绍中可以得知:

pip 最初的目的是为了在以下几个方面改进 easy_install :

  • 所有软件包在安装之前都会被下载。没有因为在安装过程中中断而导致的安装不完全的情况。
  • 在控制台上以友好的方式显示信息。
  • 跟踪操作的原因。例如,如果正在安装软件包,则pip 会跟踪为什么需要该软件包。
  • 错误消息应当是有用的。
  • 代码相对简洁而内聚,易于编程使用。
  • 软件包不必作为 egg 存档安装,也可以使用扁平结构进行安装(同时保留 egg 元数据)。
  • 原生支持其他版本控制系统(Git,Mercurial 和 Bazaar)
  • 卸载软件包。
  • 易于定义固定的需求集,并可靠地重现一组软件包。
0