为啥 python 框架安装指南会建议对一些必需的包使用 easy_install 而对其他包使用 pip?
Posted
技术标签:
【中文标题】为啥 python 框架安装指南会建议对一些必需的包使用 easy_install 而对其他包使用 pip?【英文标题】:Why would a python framework installation guide advise the use of easy_install for some required packages and pip for others?为什么 python 框架安装指南会建议对一些必需的包使用 easy_install 而对其他包使用 pip? 【发布时间】:2013-03-29 19:17:34 【问题描述】:在尝试“简化”安装适用于 Windows 的 SimpleCV 框架 superpack 失败后。我现在正在阅读手动安装指南(我可以接受,因为我可以更好地控制安装,并且最终可能会了解如何在 Windows 中正确安装 Python 包!)
我试图理解每一步,而不是盲目地遵循指南,所以我对此感到困惑..
easy_install pyreadline
easy_install PIL
easy_install cython
easy_install pip
pip install ipython
pip install https://github.com/ingenuitas/SimpleCV/zipball/1.3
为什么不尽快easy_install pip 然后再pip 其他包?..
easy_install pip I intend to research and probably use get-pip.py here
pip install pyreadline
pip install PIL
pip install cython
pip install ipython
pip install https://github.com/ingenuitas/SimpleCV/zipball/1.3
这样做有什么陷阱吗? (我有限的理解是使用 pip 总是比使用 easy_install 更好。)
我知道这个问题与 SimpleCV 直接相关,但我想学习正确的方法,以便将来在没有指南的情况下安装包集合。
【问题讨论】:
【参考方案1】:我相信答案是pip
目前不支持安装二进制发行版,即包含预编译 C 扩展模块的 Python 包。 easy_install
会。
顺便说一句,正在为pip
(和easy_install
)提供替代品,这将完全支持所有平台上的二进制发行版。有关概述,请参阅 here。
【讨论】:
好的,谢谢 Ned,所以有时不得不求助于 easy_install 的另一个原因。我会密切关注未来的发展,因为我也对使用分发代替设置工具感到困惑。【参考方案2】:pip 获取您尝试安装的软件包的源代码并编译它们。因此,如果您没有安装和配置编译器,它将无法为包含用 C 编写的扩展的包执行此操作,在这种情况下适用于 pyreadline
、PIL
和 cython
。
easy_install 使用来自pypi 的预编译包(至少对于 Windows,如果它们可用的话),这意味着您不需要自己编译所有内容。
对于纯 python 包,使用 pip 代替 easy_install 没有问题,如果你有编译器并安装了必要的构建依赖项,它也应该可以工作。
【讨论】:
感谢Mata如此清晰的回答!我一直在想“我们会同时下载软件包,有什么区别?(除了 pip 带来的好处)-我没有考虑实际下载的是什么,所以再次感谢您清除它。它确实提出了如何确定一个包是否是纯 python 的问题。如果尝试编译失败,我应该默认只尝试 pip 并求助于 easy_install 吗? 这就是我通常做的事情。 pip 也遵循 pypi 的下载 url,因此有时它会从项目主页安装较新的版本,然后从 pypi 安装打包的版本。如果C
在描述中被列为“编程语言”,您也可以直接查看 pypi。
是的,已经注意到 PyPi 上的语言参考,不确定这是否只是一个元标记,表明包可能以某种方式与 C 相关,而不是肯定有 C 源(例如“C”纯python编写的教程包)。
...公平地说,我已经仔细检查过,它明确指出“编程语言”。我知道 pip 会跟随链接并尝试获取最新版本 - 我想这有时会导致进一步的问题。
元数据由包所有者维护,因此不能保证它是正确的。通常看到C
有一个非常强烈的暗示,它包含这种语言的扩展,但你是对的,维护者也可能出于其他原因将它放在那里。以上是关于为啥 python 框架安装指南会建议对一些必需的包使用 easy_install 而对其他包使用 pip?的主要内容,如果未能解决你的问题,请参考以下文章
您的PHP似乎没有安装运行WordPress所必需的MySQL扩展?