为什么使用 pip 而不是 easy_install?

新手上路,请多包涵

一条 推文 写道:

不要使用 easy_install,除非你喜欢用刀捅自己的脸。使用点子。

为什么使用 pip 而不是 easy_install?问题不 主要在于 PyPI 和包作者 吗?如果作者将垃圾源 tarball(例如:缺少文件,没有 setup.py)上传到 PyPI,那么 pip 和 easy_install 都会失败。除了外观上的差异,为什么 Python 用户(如上面的推文)似乎 喜欢 pip 而不是 easy_install?

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

原文由 Sridhar Ratnakumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 318
2 个回答

这里的许多答案在 2015 年已经过时(尽管 Daniel Roseman 最初接受 的答案不是)。这是目前的情况:

  • 二进制包现在作为轮子( .whl 文件)分发——不仅在 PyPI 上,而且在第三方存储库中,如 Christoph Gohlke 的 Windows 扩展包pip 可以处理轮子; easy_install 不能。
  • 虚拟环境(内置于 3.4,或者可以添加到 2.6+/3.1+ virtualenv )已经成为一个非常重要和突出的工具(并在 官方文档 中推荐);它们包括 pip 开箱即用,但甚至不能与 easy_install 一起正常工作。
  • 不再维护包含 easy_installdistribute 包。它对 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 Packaging User Guide 取代了有关安装、使用和构建包的各种不完整文档。 Python 自己关于 安装 Python 模块 的文档现在遵从本用户指南,并明确指出 pip 作为“首选安装程序”。
  • 其他新功能已添加到 pip 多年来永远不会出现在 easy_install 中。例如, pip 通过构建需求文件然后在每一侧使用单个命令安装它,可以轻松克隆站点包。或者将您的需求文件转换为本地存储库以用于内部开发。等等。

据我所知,在 2015 年使用 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 包括 readline 在某种程度上 easy_install 知道如何四处走动,但 pip 不知道,所以你也想 sudo easy_install readline 如果你想升级它。

原文由 abarnert 发布,翻译遵循 CC BY-SA 3.0 许可协议

来自 Ian Bicking 自己 对 pip 的介绍

pip 最初是为了通过以下方式改进 easy_install 而编写的

  • 安装前下载所有包。结果不会出现部分完成的安装。
  • 注意在控制台上显示有用的输出。
  • 跟踪行动的原因。例如,如果正在安装一个包,pip 会跟踪为什么需要该包。
  • 错误信息应该有用。
  • 代码相对简洁和内聚,使其更易于以编程方式使用。
  • 包不必作为 egg 存档安装,它们可以平放安装(同时保留 egg 元数据)。
  • 对其他版本控制系统(Git、Mercurial 和 Bazaar)的原生支持
  • 卸载软件包。
  • 简单地定义固定的需求集并可靠地复制一组包。

原文由 Daniel Roseman 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题