Numpy 未定义符号:clapack_sgesv

Numpy 未定义符号:clapack_sgesv,numpy,scipy,python-2.6,Numpy,Scipy,Python 2.6,我有一个小代码: 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(ban

我有一个小代码:

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
回溯(最近一次呼叫最后一次):
文件“foo.py”,第2行,在
从scipy输入信号
文件“/usr/lib/python2.6/site packages/scipy/signal/_init__.py”,第10行,在
从过滤器\u设计导入*
文件“/usr/lib/python2.6/site packages/scipy/signal/filter_design.py”,第12行,在
从scipy导入特殊,优化
文件“/usr/lib/python2.6/site packages/scipy/optimize/_init__.py”,第14行,在
从诺林进口*
文件“/usr/lib/python2.6/site packages/scipy/optimize/nonlin.py”,第113行,在
从scipy.linalg导入标准、解算、库存、qr、svd、lstsq、LINALGER
文件“/usr/lib/python2.6/site packages/scipy/linalg/_init__.py”,第9行,在
从基本进口*
文件“/usr/lib/python2.6/site packages/scipy/linalg/basic.py”,第14行,在
从lapack导入获取\u lapack\u函数
文件“/usr/lib/python2.6/site packages/scipy/linalg/lapack.py”,第15行,在
从scipy.linalg导入clapack
导入错误:/usr/lib/python2.6/site-packages/scipy/linalg/clapack.so:未定义的符号:clapacksgesv
怎么了?似乎是scipy导入信号发出的
,但我不清楚

我已经查看了其他来源和论坛,但没有任何原因:


谢谢

我不能确定,因为您没有指定您使用的发行版,但我在Gentoo上遇到了同样的问题

/usr/lib和/usr/lib64具有指向实际库的符号链接。默认情况下,它链接到libblas、libcblas和liblapack的参考实现——它不为clack_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 ...)

在Debian上,您可以使用
更新替代方案
,前提是您安装了多个参考实现


从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

... 顺便说一句,如果有可用的选项,你会想使用线程的一个。这是为我做的。我是唯一一个这样做的人。@Emre对不起,那没关系。我被+1和注释之间的差距弄糊涂了。
 sudo apt-get remove python-scipy
 sudo rm -fr /usr/local/lib/python2.7/dist-packages/scipy*
 sudo apt-get install python-scipy