问题:为什么要在easy_install上使用pip?[关闭]
一条推文中写道:
不要使用easy_install,除非您喜欢对自己的脸部进行刺伤。使用点子。
为什么要在easy_install上使用pip?难道不是PyPI和程序包作者最主要的原因吗?如果作者将废话源tarball(例如:缺少文件,没有setup.py)上传到PyPI,则pip和easy_install都将失败。除了化妆品的差异,为什么Python的人(如上面的鸣叫)似乎强烈地倾向于在点子的easy_install?
(假设我们正在谈论由社区维护的Distribute软件包中的easy_install)
回答 0
此处的许多答案在2015年已经过时了(尽管最初由Daniel Roseman接受的答案不是)。这是当前的状态:
- 现在,二进制程序包以轮子(
.whl
文件)的形式分发-不仅在PyPI上,而且在第三方存储库中,例如Christoph Gohlke的Windows Extension Packages。pip
可以处理轮子;easy_install
不能。 - 虚拟环境(由3.4内置,或者可以通过2.6添加到2.6 + / 3.1 +
)已经成为一个非常重要和突出的工具(并在官方文档中推荐);它们 pip
是开箱即用的,但是甚至无法正常使用easy_install
。 distribute
包含的软件包easy_install
不再维护。它的改进已setuptools
合并回setuptools
。尝试安装distribute
只会安装setuptools
。easy_install
本身只是准维护的。- 所有的其中箱子
pip
用于不如easy_install
从解包源树-installing,从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
如果要升级。
回答 1
pip最初旨在通过以下方式对easy_install进行改进
- 所有软件包均在安装前已下载。结果不会发生部分完成的安装。
- 注意在控制台上显示有用的输出。
- 采取行动的原因已被跟踪。例如,如果正在安装软件包,则pip会跟踪为什么需要该软件包。
- 错误消息应该很有用。
- 该代码相对简洁明了,具有内聚性,可以更轻松地以编程方式使用。
- 软件包不必作为Egg存档安装,可以将它们平放安装(同时保留Egg元数据)。
- 对其他版本控制系统(Git,Mercurial和Bazaar)的本地支持
- 卸载软件包。
- 简单定义固定的需求集并可靠地复制一组包。
回答 2
另一个(至今尚未提及)之所以喜欢点子,是因为它是新的热点,并将在未来继续使用。
以下信息图表(来自《The Hitchhiker’s Guide to Packaging v1.0》中的“ 包装的当前状态”部分)表明setuptools / easy_install将来会消失。
这是Distribution的文档中的另一个信息图,显示Setuptools和easy_install将被新的热点— distribution和pip取代。虽然PIP仍然是新的辣味,分发与合并的setuptools在2013年发布的setuptools V0.7。
回答 3
有两个原因,可能还有更多:
pip提供
uninstall
命令如果中间安装失败,则pip将使您保持干净状态。
回答 4
需求文件。
认真地说,我每天都将它与virtualenv结合使用。
快速依赖管理教程,民谣
需求文件使您可以创建已通过pip安装的所有软件包的快照。通过将这些程序包封装在虚拟环境中,可以使代码库在一组非常特定的程序包中工作,并与其他人共享该代码库。
从Heroku的文档中 https://devcenter.heroku.com/articles/python
您创建一个虚拟环境,并设置您的外壳以使用它。(bash / * nix指令)
virtualenv env
source env/bin/activate
现在,与此外壳一起运行的所有python脚本都将使用该环境的软件包和配置。现在,您可以在此环境中本地安装软件包,而无需在计算机上全局安装。
pip install flask
现在,您可以转储有关安装哪些软件包的信息
pip freeze > requirements.txt
如果您将该文件签入版本控制中,那么当其他人获取您的代码时,他们可以设置自己的虚拟环境并使用以下命令安装所有依赖项:
pip install -r requirements.txt
任何时候您都可以像这样自动执行乏味的操作。
回答 5
pip不会安装二进制软件包,并且未在Windows上经过良好测试。
由于Windows默认没有附带编译器,因此通常无法在其中使用pip 。easy_install 可以为Windows安装二进制软件包。
回答 6
更新:正如某些人所想,setuptools
已经吸收distribute
了相反的东西。setuptools
是最新的最新distutils
更改和滚轮格式。因此,easy_install
和pip
或多或少平等现在。
来源:http : //pythonhosted.org/setuptools/merge-faq.html#why-setuptools-and-not-distribute-or-another-name
回答 7
除了模糊人的答复:
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
。
回答 8
刚遇到一个我不得不easy_install
代替的特殊情况pip
,否则我必须直接提取源代码。
对于该软件包GitPython
,in中的版本pip
太旧,即0.1.7
,而from中的版本easy_install
是最新的,即0.3.2.rc1
。
我正在使用Python 2.7.8
。我不知道有关的底层机制easy_install
和pip
,但至少有一些包的版本可能是彼此不同的,有时easy_install
是一个较新的版本。
easy_install GitPython