在OS X上冻结pip需求、NumPy和SciPy

4 投票
2 回答
1295 浏览
提问于 2025-04-16 06:54

我有一个pip需求文件,正在用virtualenv来自动获取我应用程序所需的依赖包。

这个应用程序依赖于NumPy和SciPy,所以我的pip需求文件里包括了:

numpy==1.5.0
scipy==0.8.0

但是,当我在一个新的virtualenv中运行这个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 个回答

1

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

我用这个命令进行了更新(需要安装Mercurial,因为pip是托管在Bitbucket上的):

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

我觉得你可能做不到。Pip和setuptools并不是标准工具——我们尽量支持它们,但这并不稳定。特别是因为scipy的setup.py需要numpy来运行,所以它不能通过install_requires这个参数来工作。

撰写回答