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="-archi386 -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 MacOSXページで指定されているとおり。エクスポートするだけです:CC = gcc-4.2 CXX = g ++-4.2 FFLAGS = -ff2c
別のシステムにインストールしただけで、すべてが正常に機能しました。