为什么使用pipeasy_install?

推文表示:

不要使用easy_install,除非你就像刺伤自己的脸。使用pip。

为什么在easy_install上使用pip?错误主要在于PyPI和包作者不是吗?如果作者上传了垃圾源代码tarball(例如:丢失的文件,没有setup.py)到PyPI,那么pip和easy_install都会失败。除了表面上的差异,为什么Python的人(如上面的推文)似乎最喜欢pip而不是easy_install?

(假设我们谈论的是来自社区维护的分布式包的easy_install)

238060 次浏览

两个原因,可能还有更多:

  1. pip提供了一个uninstall命令

  2. 如果安装在中间失败,pip将使您处于干净状态。

伊恩·比克自己的pip简介

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

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

要求文件。

说真的,我每天都把它和虚拟环境结合起来使用。


快速依赖管理教程,伙计们

需求文件允许您创建通过pip安装的所有包的快照。通过将这些包封装在虚拟环境中,您可以让您的代码库处理一组非常特定的包并与其他人共享该代码库。

来自Heroku的留档https://devcenter.heroku.com/articles/python

您创建一个虚拟环境,并将shell设置为使用它。(bash/*nix说明)

virtualenv envsource env/bin/activate

现在,所有使用此shell运行的python脚本都将使用此环境的包和配置。现在,您可以在本地将包安装到此环境,而无需在您的机器上全局安装它。

pip install flask

现在您可以转储有关安装了哪些软件包的信息

pip freeze > requirements.txt

如果您将该文件签入版本控制,当其他人获取您的代码时,他们可以设置自己的虚拟环境并安装所有依赖项:

pip install -r requirements.txt

任何时候你都可以像这样自动化单调乏味,这太棒了。

pip不会安装二进制包,并且在Windows上没有经过很好的测试。

由于Windows默认情况下没有编译器,因此经常使用不能。easy_install可以为Windows安装二进制包。

另一个尚未提及的支持pip的原因是因为它是新的热门,并将在未来继续使用。

下面的信息图——来自搭便车的包装指南v1.0中的包装现状部分——表明setupols/easy_install将在未来消失。

输入图片描述

这是另一个来自分发的留档的信息图,显示Setup工具和easy_install将被新的热门-分发pip取代。虽然pip仍然是新的热门,但分发在2013年随着Setup工具 v0.7的发布与Setup工具合并。

输入图片描述

作为对fuzzyman回复的补充:

pip不会安装二进制包,并且在Windows上没有经过很好的测试。

由于Windows默认不附带编译器,pip通常不能easy_install可以为Windows安装二进制包。

这是Windows上的一个技巧:

  • 您可以使用easy_install <package>安装二进制包以避免构建二进制

  • 您可以使用pip uninstall <package>,即使您使用easy_install。

这只是一个在Windows上工作的解决方案。实际上,如果不涉及二进制文件,我总是使用pip。

查看当前pip doku:http://www.pip-installer.org/en/latest/other-tools.html#pip-compared-to-easy-install

我会在邮件列表上询问计划是什么。

以下是最新的更新:

安装二进制文件的新支持方式将是wheel!它还没有在标准中,但差不多。当前版本仍然是alpha:1.0.0a1

https://pypi.python.org/pypi/wheel

http://wheel.readthedocs.org/en/latest/

我将通过使用wheel而不是鸡蛋为PySide创建一个OS X安装程序来测试wheel。会回来报告这一点。

干杯-克里斯

快速更新:

wheel的过渡即将结束。大多数包都支持wheel

我答应为PySide造轮子,去年夏天我做到了。效果很好!

提示:到目前为止,一些开发人员未能支持车轮格式,只是因为他们忘记了将distutils替换为setuptools。通常,通过替换setup.py中的这个单词很容易转换这样的包。

更新:setuptools已经吸收了distribute,而不是相反,正如一些人所想的那样。setuptools是最新的distutils更改和车轮格式。因此,easy_installpip现在或多或少处于同等地位。

来源:http://pythonhosted.org/setuptools/merge-faq.html#why-setuptools-and-not-distribute-or-another-name

刚刚遇到一个特殊情况,我必须使用easy_install而不是pip,或者我必须直接提取源代码。

对于包GitPythonpip中的版本太旧,即0.1.7,而easy_install中的版本是最新的,即0.3.2.rc1

我正在使用Python 2.7.8。我不确定easy_installpip的底层机制,但至少某些包的版本可能彼此不同,有时easy_install是版本较新的包。

easy_install GitPython

这里的许多答案在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打包用户指南所取代。Python在安装Python模块上自己的留档现在遵从这个用户指南,并明确地将pip称为“首选安装程序”。
  • 多年来,pip中添加了其他永远不会出现在easy_install中的新功能。例如,pip通过构建需求文件,然后在每一侧使用单个命令安装它,可以轻松克隆您的站点包。或者将您的需求文件转换为本地存储库以用于内部开发。等等。

我知道在2015年使用easy_install的唯一好理由是在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