为什么要使用 pip 而不是 easy_install?
- 2024-12-19 09:23:00
- admin 原创
- 61
问题描述:
推文如下:
不要使用 easy_install,除非你喜欢自讨苦吃。使用 pip。
为什么要使用 pip 而不是 easy_install?这难道不是PyPI 和软件包作者的错吗?如果作者将垃圾源 tarball(例如:缺少文件,没有 setup.py)上传到 PyPI,那么 pip 和 easy_install 都会失败。除了外观上的差异之外,为什么 Python 人员(如上面的推文)似乎强烈支持 pip 而不是 easy_install?
(我们假设我们正在讨论由社区维护的 Distribute 包中的 easy_install)
解决方案 1:
来自 Ian Bicking对 pip 的介绍:
pip 最初是为了通过以下方式改进 easy_install 而编写的
安装前会下载所有软件包。因此不会出现安装不完整的情况。
注意在控制台上显示有用的输出。
操作原因会被记录下来。例如,如果正在安装某个包,pip 会记录需要该包的原因。
错误消息应该是有用的。
代码相对简洁且具有凝聚力,使得更易于以编程方式使用。
软件包不必作为 egg 档案安装,它们可以以平面形式安装(同时保留 egg 元数据)。
对其他版本控制系统(Git、Mercurial 和 Bazaar)的本机支持
卸载软件包。
简单定义固定的需求集并可靠地重现一组包。
解决方案 2:
这里的许多答案对于 2015 年来说都已经过时了(尽管Daniel Roseman 最初接受的答案并没有过时)。以下是目前的情况:
二进制包现在以轮子(文件)的形式分发
.whl
——不仅在 PyPI 上,而且在第三方存储库中,例如Christoph Gohlke 的 Windows 扩展包。pip
可以处理轮子;easy_install
不能。虚拟环境 (3.4 内置,也可以通过 添加到 2.6+/3.1+ 中
virtualenv
) 已经成为一个非常重要和突出的工具 (并在官方文档中推荐);它们包括pip
开箱即用的功能,但甚至不能与 一起正常工作easy_install
。distribute
包含的软件包不再easy_install
维护。它的改进setuptools
已合并回setuptools
。尝试安装distribute
只会安装setuptools
。easy_install
其本身仅处于准维持状态。pip
所有以前不如从解压的源代码树、从 DVCS 存储库等进行安装的情况easy_install
都已不复存在;您可以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
是使用 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
解决方案 3:
另一个 — — 目前尚未提及 — — 青睐pip的原因是因为它是新兴热点并将在未来继续被使用。
下面的信息图取自《包装指南》v1.0中的“包装现状”部分,显示 setuptools/easy_install 将来会消失。
这是来自deliver 文档的另一张信息图,显示Setuptools和 easy_install 将被新热门——distribute和pip取代。虽然pip仍然是新热门,但Distribute已于 2013 年与Setuptools合并,并发布了Setuptools v0.7。
解决方案 4:
有两个原因,或许还有更多:
pip 提供了一个
uninstall
命令如果安装中途失败,pip 将让您处于干净状态。
解决方案 5:
需求文件。
说真的,我每天都将它与 virtualenv 结合使用。
快速依赖管理教程,大家好
需求文件允许您创建已通过 pip 安装的所有软件包的快照。通过将这些软件包封装在虚拟环境中,您可以让您的代码库基于一组非常特定的软件包运行,并与其他人共享该代码库。
来自 Heroku 的文档https://devcenter.heroku.com/articles/python
您创建一个虚拟环境,并设置您的 shell 来使用它。(bash/*nix 说明)
virtualenv env
source env/bin/activate
现在,使用此 shell 运行的所有 Python 脚本都将使用此环境的包和配置。现在您可以将包本地安装到此环境,而无需在您的计算机上全局安装它。
pip install flask
现在你可以转储有关安装了哪些软件包的信息
pip freeze > requirements.txt
如果您将该文件签入版本控制,当其他人获得您的代码时,他们可以设置自己的虚拟环境并使用以下命令安装所有依赖项:
pip install -r requirements.txt
任何时候你都可以像这样自动化单调乏味的工作,真是太棒了。
解决方案 6:
pip 不会安装二进制包,并且在 Windows 上没有经过充分测试。
由于 Windows 默认没有自带编译器,因此 pip 通常无法在那里使用。easy_install可以为 Windows 安装二进制包。
解决方案 7:
更新:setuptools
已经吸收,distribute
而不是像有些人认为的那样反过来。与最新的更改和轮盘格式setuptools
保持同步。因此,和现在或多或少处于平等地位。distutils
`easy_install`pip
来源:http://pythonhosted.org/setuptools/merge-faq.html#why-setuptools-and-not-distribute-or-another-name
解决方案 8:
作为 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
通过创建 OS X 安装程序来PySide
代替wheel
eggs 进行测试。我会回来报告此事。
欢呼 - 克里斯
快速更新:
到 的过渡wheel
即将结束。大多数软件包都支持wheel
。
我答应要为 制造轮子PySide
,去年夏天我做到了。效果很好!
提示:到目前为止,一些开发人员未能支持 wheel 格式,只是因为他们忘记用 替换distutils
。setuptools
通常,只需在 中替换这个单词即可轻松转换此类软件包setup.py
。
解决方案 9:
刚刚遇到一个特殊情况,我必须使用easy_install
而不是pip
,否则我必须直接提取源代码。
对于软件包GitPython
,中的版本pip
太旧,即0.1.7
,而中的版本easy_install
是最新的,即0.3.2.rc1
。
我正在使用Python 2.7.8
。我不确定easy_install
和 的底层机制pip
,但至少一些包的版本可能彼此不同,有时easy_install
是具有较新版本的包。
easy_install GitPython
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件