2013-01-16 334 views
1

儘管我聽說過很多人在Mac OS X Lion上安裝numpy,scipy和matplotlib時遇到問題,但直到今天我從未遇到任何問題。我最近更新了我的系統,並試圖安裝NumPy和SciPy的最新版本。 NumPy安裝進行得很順利,測試按預期運行,但scipy安裝似乎不完整。每次我嘗試導入scipy.stats我得到以下錯誤:在Mac OS X Lion上安裝Scipy 10.7.5

In [1]: import scipy.stats 
--------------------------------------------------------------------------- 
ImportError        Traceback (most recent call last) 
<ipython-input-1-b66176eb2d0a> in <module>() 
----> 1 import scipy.stats 

    /Library/Python/2.7/site-packages/scipy/stats/__init__.py in <module>() 
    326 """ 
    327 
--> 328 from stats import * 
    329 from distributions import * 
    330 from rv import * 

/Library/Python/2.7/site-packages/scipy/stats/stats.py in <module>() 
    191 # Scipy imports. 
    192 from numpy import array, asarray, dot, ma, zeros, sum 
--> 193 import scipy.special as special 
    194 import scipy.linalg as linalg 
    195 import numpy as np 

/Library/Python/2.7/site-packages/scipy/special/__init__.py in <module>() 
    525 """ 
    526 
--> 527 from _ufuncs import * 
    528 from _ufuncs_cxx import * 
    529 

ImportError: dlopen(/Library/Python/2.7/site-packages/scipy/special/_ufuncs.so, 2): no  suitable image found. Did find: 
    /Library/Python/2.7/site-packages/scipy/special/_ufuncs.so: mach-o, but wrong architecture 

我使用的是最新版本的numpy的和SciPy的關github上的。出於某種原因,它看起來像_ufuncs.so的x86_64版本沒有被構建。我已經想盡編譯器標誌我能想到的 ARCHFLAGS = 「 - 拱i386的-arch x86_64的」 LDFLAGS = 「 - 拱i386的-arch x86_64的」 FFLAGS = 「 - M64 -ff2c」

,並沒有什麼母校我得到同樣的錯誤。有什麼建議?

UPDATE 所以我認爲,我已經找到了問題,我將在後續的SciPy的分發列表:

大多數SciPy的構建時創建的庫是通用的文件,這意味着它們同時支持i386和x86_64。問題在於用gfortran編譯的文件只能編譯爲i386。

> find . -name *.so | xargs -I {} lipo -info {} 
Architectures in the fat file: ./build/lib.macosx-10.7-intel-2.7/scipy/cluster/_hierarchy_wrap.so are: i386 x86_64 
Architectures in the fat file: ./build/lib.macosx-10.7-intel-2.7/scipy/cluster/_vq.so are: i386 x86_64 
Non-fat file: ./build/lib.macosx-10.7-intel-2.7/scipy/fftpack/_fftpack.so is architecture: i386 

我檢查了我的環境,但沒有看到任何可疑的東西。如SciPy Mac OS X頁面所述。我唯一的出口: CC = GCC-4.2 CXX = G ++ - 4.2 FFLAGS = -ff2c

我只是沒有安裝其他系統上,一切工作就好了。

+0

我注意到了響應http://stackoverflow.com/questions/10046043/pip-easy-install-ignoring-archflags-in-scipy-installation但設置ARCHFLGS不適合我。 –

回答

0

最後我最終刪除了所有的GNU編譯器C,C++和GFortran。然後重新安裝2.5.1版本。然後設置環境變量:

CC=gcc-4.2 
CXX=g++-4.2 
FFLAGS=-ff2c 
ARCHFLAGS="-arch i386 -arch x86_64" 

之後,我建立了Scipy和瞧!通用二進制代碼出現了:

[16:29:27] junebug:fftpack> lipo -info _fftpack.so 
Architectures in the fat file: _fftpack.so are: i386 x86_64 

我不知道什麼是錯的路徑我的GNU編譯器,但我認爲這個問題可能是因爲我已經安裝了多個版本。

1

一個類似的問題已經回答了here,我同意它 - 安裝在virtualenv是最好的方法。 OS X本身依賴於某些Python庫的特定版本,因此有時在主Python解釋器中安裝額外的軟件包有點棘手(例如,我在使用matplotlib時遇到了麻煩)。

安裝的virtualenv是真正爲this blog post和boiles解釋到安裝的virtualenv(包裝)

pip install virtualenv virtualenvwrapper 

採購,並創建一個新的環境,很簡單你在

source /usr/local/share/python/virtualenvwrapper.sh 
mkvirtualenv system 
workon system 

要去工作你現在可以從奶酪店安裝任何你需要的東西。將sourceworkon命令添加到您的.bashrc文件中,以便自動選擇此環境。

+0

感謝您的幫助。正如你所建議的那樣,我嘗試了virtualenv的安裝,但它仍然是不成功的。我認爲我的編譯器遇到了一些路徑問題。由於我還沒有得到通用二進制文件。 –

+0

http://stackoverflow.com/questions/12092306/how-to-install-scipy-with-pip-on-mac-mountain-lion-os-x-v10-8/18815061#18815061我的小指南。 Works on OS X Mountain Lion 10.8.4 – andi

0

ScipySuperpack修復所有。

$ curl -o install_superpack.sh https://raw.github.com/fonnesbeck/ScipySuperpack/master/install_superpack.sh 
$ sh install_superpack.sh 
+0

感謝您的幫助,但有時我需要處於開發的最前沿,所以理想情況下,我希望能夠安裝任何版本的numpy,scipy,matplotlib和pandas我想要的。 –