为什么Python框架安装指南建议在某些必需的包中使用easy_install而在另一些包中使用pip?

7

在尝试使用简化版的SimpleCV框架超级包在Windows上安装失败后,现在我正在按照手动安装指南进行操作(我能接受手动安装,因为我可以更好地掌控安装过程,也可能最终学会如何在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

用这种方式有什么缺陷吗?(我的有限理解是,与easy_install相比,使用pip始终更可取。)

我知道这个问题直接关系到SimpleCV,但我想学习在将来没有指南的情况下安装包集合的正确方法。

2个回答

5

pip会获取您尝试安装的软件包的源代码并进行编译。因此,如果您没有安装和配置编译器,则在包含用C编写的扩展的软件包(例如pyreadlinePILcython)中执行时,它将无法编译。

easy_install使用来自pypi(至少对于Windows如果有可用)的预编译软件包,这意味着您不需要自己编译所有内容。

对于纯python软件包,使用pip而不是easy_install没有问题,并且如果您安装了编译器和必要的构建依赖项,则它也可以工作。


谢谢你这么清晰的回答,Mata!我已经想到了“它们都下载包,有什么区别吗?(除了pip带来的好处)-我没有考虑实际下载了什么,所以再次感谢你澄清了这一点。 这确实引出了一个问题,如何确定一个包是否是纯Python的。我应该默认尝试使用pip,如果失败尝试编译,然后再使用easy_install吗? - Richard Plester
1
这通常是我所做的。pip也会遵循来自pypi的下载链接,因此有时它会安装一个比pypi打包的更新版本从项目主页上。如果在描述中将C列为“编程语言”,您还可以直接查看pypi。 - mata
是的,我注意到了PyPi上的语言参考,但不确定它是否只是一个元标记,表示该软件包可能以某种方式与C相关,而不一定具有C源代码(例如,用纯Python编写的“C”教程软件包)。 - Richard Plester
好吧,公平地说,我已经仔细检查过了,它明确指出“编程语言”。我理解pip会跟随链接并尝试获取最新版本-我想这有时可能会导致更多问题。 - Richard Plester
1
元数据由包所有者维护,因此不能保证其正确性。通常在那里看到 C,非常强烈地暗示它包含这种语言的扩展,但您是对的,维护者也可能出于其他原因将其放在那里。 - mata

2
我认为答案是,目前pip不支持安装二进制分发包,即包含预编译的C扩展模块的Python软件包。但是easy_install可以。 此外,正在进行工作来为所有平台提供完全支持二进制分发的pip(和easy_install)替代品。请查看此处获取概述信息。

好的,谢谢Ned。有时候不得不使用easy_install是另一个原因。我会关注未来的发展,因为我也对在setuptools中使用distribute感到困惑。 - Richard Plester

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接