在OS X上,pip需求、NumPy和SciPy的冻结问题

4
我有一个pip需求文件,我正在使用virtualenv自动获取应用程序的依赖项。
应用程序依赖于NumPy和SciPy,因此我的pip需求文件包括:
numpy==1.5.0
scipy==0.8.0

然而,在新的虚拟环境中运行此pip时,安装失败并出现以下错误:
File "/Users/x/virtualenv/deploy/src/scipy/setup.py", line 58, in svn_version
    from numpy.compat import asstr
ImportError: No module named numpy.compat
Complete output from command python setup.py egg_info:
Traceback (most recent call last):

这是因为在构建之前SciPy需要先安装NumPy。因此,如果我先移除SciPy,然后再手动添加SciPy(pip install scipy),就可以解决问题。
考虑到pip并不按任何特定顺序安装软件包,我该如何解决这个问题呢?
2个回答

4
我认为你做不到。Pip和setuptools都不是标准工具。虽然我们尽量支持它们,但这种支持是脆弱的。特别地,由于scipy setup.py需要numpy才能运行,因此它无法使用install_requires参数正常工作。

1

我刚遇到了完全相同的问题!幸运的是,最新的pip开发版本会按照要求文件中列出的顺序安装软件包。

我使用了以下命令进行更新(需要Mercurial,因为pip托管在Bitbucket上):

pip install hg+https://bitbucket.org/ianb/pip

1
啊,我说得太早了。虽然pip的开发版本可以按正确的顺序下载和构建软件包,但scipy的构建步骤需要先安装(而不仅仅是构建)numpy,所以这并不能解决问题。不过,这是朝着正确方向迈出的一步! - Jacob Rigby

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