当前位置: 首页 > 面试题库 >

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

谢鸿羲
2023-03-14
问题内容

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

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


问题答案:

这里的许多答案在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如果要升级。



 类似资料:
  • rank ▲ ✰ vote url 32 527 250 408 url 为什么用pip比用easy_install的好? 一个推特写道: 别用easy_install,除非你想自讨苦吃.那么用pip. 为什么要用pip而不是easy_install?如果一个作者上传一个损坏的源文件包(比如丢失文件,没有setup.py),那么pip和easy_install都将失效.除了这些,为什么Pytho

  • 问题内容: 我在网上研究过immutablejs的好处,但是没有发现任何令人满意的东西! 我的问题是,当我可以冻结一个普通的旧javascript对象时,为什么我应该使用该库并使用非本机数据结构? 问题答案: 我认为您不了解immutablejs提供的功能。这不是一个使您的对象变得不可变的库,而是一个使用不可变值的库。 在不简单重复他们的文档和任务说明的情况下,我将说明它提供的两件事: 类型。他们

  • 问题内容: 我的用例需要一个数据结构。我应该能够将项目推送到数据结构中,而我只想从堆栈中检索最后一个项目。该堆栈的JavaDoc说: Deque接口及其实现提供了一组更完整和一致的LIFO堆栈操作,应优先使用此类。例如: 我绝对不希望这里出现同步行为,因为我将使用方法本地的数据结构。除了这个,我为什么还要在这里呢? PS:Deque的Javadoc说: 双端队列也可以用作LIFO(后进先出)堆栈。

  • 问题内容: 我一定会丢失一些东西,但是我已经看了几天了,但是到底为什么您会使用log4j2而不是log4j(而不是性能)? 从目前为止我所看到的,log4j2被宣传为更易于配置,但实际上却要复杂得多(现在已经三天了,我仍然无法在我的主目录中写日志)。自动配置对我根本不起作用(或者至少我无法使其工作),配置文件本身的结构实质上更复杂,在运行时添加东西以帮助诊断似乎更加困难。 因此,除了性能之外,还有

  • 我需要一个数据结构用于我的用例。我应该能够将项目推入数据结构,并且我只想从堆栈中检索最后一个项目。JavaDoc for Stack表示:

  • 问题内容: 在Windows XP上安装Python 2.7之后,然后手动设置为(为什么python安装程序不这样做?),然后安装(为什么python安装程序不这样做?),然后手动设置为(为什么?安装程序执行此操作吗?),我最终尝试使用来安装python软件包,但是当它无法安装pywin32软件包时却失败了,这是一个依赖项。 如何使easy_install在Windows XP上正常工作? 失败如