2010-11-11 65 views
4

我有一個點匹配需求文件,我正在使用virtualenv自動獲取我的應用程序的依賴關係。凍結pip要求,NumPy和SciPy在OS X上

應用取決於兩個與NumPy和SciPy的,因此我的PIP要求文件包括:

numpy==1.5.0 
scipy==0.8.0 

然而,在新的virtualenv運行這個點子時,安裝失敗,出現以下錯誤:

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安裝scipy),它就會起作用。

鑑於點不按任何特定順序安裝,我該如何解決此問題?

回答

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(不僅僅是構建),所以這不能解決問題。這是朝着正確的方向邁出的一步! – 2011-01-18 10:13:01