2012-01-11 19 views
4

私はこの小さなコードがあります。未定義のシンボル:clapack_sgesv

from numpy import * 
from scipy import signal, misc 
import matplotlib.pyplot as plt 

path="~/pics/" 
band_1 = misc.imread(path + "foo.tif"); 

H = array((1/2.0, 1/4.0, 1/2.0)); 
signal.convolve2d(band_1.flatten(), H) 

plt.figure() 
plt.imshow(band_1) 
plt.show() 

その後、私はこのコードpython foo.pyを実行し、それがこのエラーがスローされます。

Traceback (most recent call last): 
    File "foo.py", line 2, in <module> 
    from scipy import signal 
    File "/usr/lib/python2.6/site-packages/scipy/signal/__init__.py", line 10, in <module> 
    from filter_design import * 
    File "/usr/lib/python2.6/site-packages/scipy/signal/filter_design.py", line 12, in <module> 
    from scipy import special, optimize 
    File "/usr/lib/python2.6/site-packages/scipy/optimize/__init__.py", line 14, in <module> 
    from nonlin import * 
    File "/usr/lib/python2.6/site-packages/scipy/optimize/nonlin.py", line 113, in <module> 
    from scipy.linalg import norm, solve, inv, qr, svd, lstsq, LinAlgError 
    File "/usr/lib/python2.6/site-packages/scipy/linalg/__init__.py", line 9, in <module> 
    from basic import * 
    File "/usr/lib/python2.6/site-packages/scipy/linalg/basic.py", line 14, in <module> 
    from lapack import get_lapack_funcs 
    File "/usr/lib/python2.6/site-packages/scipy/linalg/lapack.py", line 15, in <module> 
    from scipy.linalg import clapack 
ImportError: /usr/lib/python2.6/site-packages/scipy/linalg/clapack.so: undefined symbol: clapack_sgesv 

間違っていますか? from scipy import signalと思われますが、わかりません。

は、私は別の情報源やフォーラムをチェックしていますが、まだ何も理由がありません:

答えて

3

私は特定することはできませんありがとうあなたが使っているディストリビューションを指定していませんが、Gentooで同じ問題が発生しました。

/usr/libと/ usr/lib64には実際のライブラリへのシンボリックリンクがあります。デフォルトでは、libblas、libcblas、およびliblapackのリファレンス実装にリンクしています.clapack_sgesvや他の多くのルーチンのシンボルをエクスポートしません。

は、Gentooでこれを解決するには、次の

sudo emerge blas-atlas 
eselect blas list 
eselect cblas list 
sudo eselect blas set X # Grab X from the result of 
sudo eselect cblas set X # the 'list' lines above 
sudo emerge lapack-atlas 
eselect lapack list 
sudo eselect lapack set X 
sudo emerge --unmerge scipy numpy matplotlib 
sudo emerge scipy numpy matplotlib (... whatever else ...) 
+0

...脇に、オプションがある場合は、スレッドを使用したいと思うでしょう。 –

4

Debianでは、あなたがupdate-alternatives使用することができ、あなたが参照実装がインストールさ以上のものを持っていると仮定します。 debian wiki

update-alternatives --config liblapack.so.3 
update-alternatives --config libblas.so.3 
+0

これは私のためにやった。詳細はhttp://danielnouri.org/notes/2012/12/19/libblas-and-liblapack-issues-and-speed,-with-scipy-and-ubuntu/ – Emre

+0

私は唯一の人です。 – Emre

+0

@Emre申し訳ありません。私は+1とコメントの間のギャップに混乱していた。 – tacaswell

1

から

は、私はUbuntuの12.04から12.10へのアップグレード後にこの問題を得ました。問題は、/usr/local/lib/python2.7/dist-packagesに2種類のscipyがインストールされていることでした。私がやった問題を解決するには:

sudo apt-get remove python-scipy 
sudo rm -fr /usr/local/lib/python2.7/dist-packages/scipy* 
sudo apt-get install python-scipy 
関連する問題