tweet读到:
不要使用easy_install,除非你喜欢刺伤自己的脸 . 使用点子 .
为什么使用pip over easy_install?不是fault lie with PyPI and package authors mostly?如果作者将垃圾源tarball(例如:丢失文件,没有setup.py)上传到PyPI,那么pip和easy_install都将失败 . 除了外观差异,为什么Python人(如上面的推文)似乎更喜欢pip而不是easy_install?
(我们假设我们正在讨论来自Distribute包的easy_install,这是由社区维护的)
9 回答
作为fuzzyman的回复的补充:
这是Windows上的一个技巧:
您可以使用
easy_install <package>
来安装二进制包以避免构建二进制文件即使使用easy_install,也可以使用
pip uninstall <package>
.这只是一种适用于Windows的解决方法 . 实际上,如果不涉及二进制文件,我总是使用pip .
查看当前的pip doku:http://www.pip-installer.org/en/latest/other-tools.html#pip-compared-to-easy-install
这是最新的更新:
安装二进制文件的新支持方式将是
wheel
!它还没有达到标准,但差不多 . 当前版本仍为alpha:1.0.0a1https://pypi.python.org/pypi/wheel
http://wheel.readthedocs.org/en/latest/
我将使用
wheel
而不是鸡蛋为PySide
创建OS X安装程序来测试wheel
. 将回来并报告此事 .欢呼 - 克里斯
快速更新:
过渡到
wheel
几乎结束了 . 大多数软件包都支持wheel
.我答应为
PySide
制造轮子,去年夏天我就这样做了 . 效果很好!提示:到目前为止,一些开发人员未能支持轮式,只是因为他们忘了将
distutils
替换为setuptools
. 通常,通过替换setup.py
中的这个单词很容易转换这些包 .来自Ian Bicking自己的introduction to pip:
有两个原因,可能会有更多:
pip提供
uninstall
命令如果安装在中间失败,则pip将使您处于干净状态 .
要求文件 .
说真的,我每天都和virtualenv一起使用它 .
QUICK DEPENDENCY MANAGEMENT TUTORIAL, FOLKS
需求文件允许您创建通过pip安装的所有软件包的快照 . 通过将这些包封装在虚拟环境中,您可以让代码库脱离一组特定的包,并与其他包共享该代码库 .
来自Heroku的文档https://devcenter.heroku.com/articles/python
您创建一个虚拟环境,并设置您的shell以使用它 . (bash / * nix说明)
现在,使用此shell运行的所有python脚本都将使用此环境的包和配置 . 现在,您可以在本地安装软件包,而无需在您的计算机上全局安装 .
现在您可以转储有关安装了哪些软件包的信息
如果您将该文件检入版本控制,当其他人获取您的代码时,他们可以设置自己的虚拟环境并安装所有依赖项:
任何时候你可以像这样自动化单调乏味 .
更新:
setuptools
吸收distribute
而不是相反,正如一些人想的那样 .setuptools
与最新的distutils
更改和车轮格式保持同步 . 因此,easy_install
和pip
或多或少现在处于平等地位 .资料来源:http://pythonhosted.org/setuptools/merge-faq.html#why-setuptools-and-not-distribute-or-another-name
pip不会安装二进制包,也没有经过Windows测试 .
由于Windows默认情况下没有编译器,因此pip通常不能在那里使用 . easy_install可以为Windows安装二进制包 .
这里的许多答案都是2015年的过时(尽管the initially accepted one from Daniel Roseman不是) . 这是目前的状况:
二进制包现在作为轮子(
.whl
文件)分发 - 不只是在PyPI上,而是在第四方存储库中,如Christoph Gohlke's Extension Packages for Windows .pip
可以处理轮子;easy_install
不能 .虚拟环境(内置3.4,或者可以添加到2.6 /3.1中)virtualenv)已成为一个非常重要和突出的工具(并在the official docs中推荐);它们包括
pip
开箱即用,但是甚至无法正常使用easy_install
.不再维护包含
easy_install
的distribute
包 . 它对setuptools
的改进被合并回setuptools
. 尝试安装distribute
只会安装setuptools
.easy_install
本身只是准维护 .pip
曾经从一个解压缩的源代码树,DVCS仓库等安装的easy_install
以下的所有情况都很久了;你可以pip install .
,pip install git+https://
.pip
附带python.org的官方Python 2.7和3.4软件包,如果你从source构建,默认包含pip
bootstrap .有关安装,使用和构建软件包的各种不完整文档已被Python Packaging User Guide替换 . Python自己在Installing Python Modules上的文档现在遵循本用户指南,并明确地将
pip
调用为"the preferred installer program" .多年来
pip
已添加了其他新功能,这些功能永远不会出现在easy_install
中 . 例如,pip
可以通过构建需求文件然后在每一侧使用单个命令安装它来轻松克隆您的站点包 . 或者将您的需求文件转换为本地仓库以用于内部开发 . 等等 .我知道在2015年使用
easy_install
的唯一原因是使用Apple预装的Python版本与OS X 10.5-10.8的特殊情况 . 自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
.刚刚遇到一个我必须使用
easy_install
而不是pip
的特殊情况,或者我必须直接提取源代码 .对于包
GitPython
,pip
中的版本太旧,这是0.1.7
,而easy_install
中的版本是最新的0.3.2.rc1
.我正在使用
Python 2.7.8
. 我不确定easy_install
和pip
的底层机制,但至少某些软件包的版本可能彼此不同,有时easy_install
是更新版本的版本 .另一个 - 尚未提及 - 赞成pip的理由是因为它是新的热点并将继续在未来使用 .
下面的信息图 - 来自The Hitchhiker's Guide to Packaging v1.0的Current State of Packaging部分显示setuptools / easy_install将来会消失 .
这是来自distribute's documentation的另一个信息图,显示Setuptools和easy_install将被新热点distribute和pip取代 . 虽然pip仍然是新的热点,但Distribute在2013年与Setuptools合并,发布了Setuptools v0.7 .