【问题标题】:Installing Scipy on Mac OS X Lion 10.7.5在 Mac OS X Lion 10.7.5 上安装 Scipy
【发布时间】:2012-12-30 06:10:01
【问题描述】:

尽管我听说过很多关于人们在 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

我正在使用 github 上最新版本的 numpy 和 scipy。出于某种原因,_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 页面上指定的那样。我只导出: 抄送=gcc-4.2 CXX=g++-4.2 FFLAGS=-ff2c

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

【问题讨论】:

标签: scipy


【解决方案1】:

最后,我删除了我所有的 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 编译器的路径出了什么问题,但我认为问题可能是因为我安装了多个版本。

【讨论】:

    【解决方案2】:

    ScipySuperpack 修复所有问题。

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

    【讨论】:

    • 感谢您的帮助,但有时我需要处于开发的最前沿,所以理想情况下,我希望能够安装任何版本的 numpy、scipy、matplotlib 和 pandas想要。
    【解决方案3】:

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

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

    pip install virtualenv virtualenvwrapper
    

    采购它并创建一个您将要工作的新环境

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

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

    【讨论】:

    • 感谢您的帮助。按照您的建议,我尝试在 virtualenv 中安装,但仍然不行。我认为我的编译器存在一些路径问题。因为我仍然没有得到通用二进制文件。
    • stackoverflow.com/questions/12092306/… 我的小指南。适用于 OS X Mountain Lion 10.8.4
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    相关资源
    最近更新 更多