在Mac OS X Lion 10.7.5上安装Scipy

时间:2013-01-16 00:48:52

标签: scipy

尽管我听说过很多关于人们在Mac OS X Lion上安装numpy,scipy和matplotlib时遇到问题的故事,但直到今天我才遇到任何问题。我最近更新了我的系统,并尝试安装最新版本的NumPy和SciPy。 NumPy安装很顺利,测试按预期运行,但scipy安装似乎不完整。每次我尝试导入scipy.stats时都会收到以下错误:

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 off github。出于某种原因,它看起来像是没有构建_ufuncs.so的x86_64版本。我已经尝试了我能想到的每个编译器标志     ARCHFLAGS =“ - arch i386 -arch x86_64”     LDFLAGS =“ - arch i386 -arch x86_64”     FFLAGS =“ - m64 -ff2c”

并且无论我做什么我都会得到同样的错误。有什么建议吗?

更新 所以我认为我已经找到了问题,我将跟进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 =克++ - 4.2 FFLAGS = -ff2c

我刚安装在另一个系统上,一切正常。

3 个答案:

答案 0 :(得分:1)

类似的问题已经回答here并且我同意 - 在virtualenv中安装是最好的方法。 OS X本身依赖于某些Python库的特定版本,因此有时在主Python解释器中安装额外的包有点棘手(例如,我在使用matplotlib时遇到了麻烦)。

安装virtualenv非常简单,如this blog post中所述,并归结为安装virtualenv(包装器)

pip install virtualenv virtualenvwrapper

采购它并创造一个你将要工作的新环境

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

您现在可以从奶酪店安装任何需要的东西。将sourceworkon命令添加到.bashrc文件中,以便自动选择此环境。

答案 1 :(得分:0)

ScipySuperpack修复了所有内容。

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

答案 2 :(得分: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编译器的路径有什么问题,但我认为问题可能是因为我安装了多个版本。