2013-01-16 339 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我想要的。 –