2012-01-11 121 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

...作爲一個選項,如果您可以使用該選項,請使用帶螺紋的選項。 – 2012-02-07 07:47:23

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 2012-12-26 05:34:50

+0

我是唯一一個做過的人。 – Emre 2012-12-27 04:56:16

+0

@Emre對不起,沒關係。我對+1和評論之間的差距感到困惑。 – tacaswell 2012-12-27 05:04:20

1

我得到了這個問題,在升級之後,從Ubuntu的12.04至12.10。問題在於我在/usr/local/lib/python2.7/dist-packages中安裝了兩個scipy版本。要解決我所做的問題:

sudo apt-get remove python-scipy 
sudo rm -fr /usr/local/lib/python2.7/dist-packages/scipy* 
sudo apt-get install python-scipy