【问题标题】:undefined symbol: clapack_sgesv未定义符号:clapack_sgesv
【发布时间】:2012-02-08 01:40:37
【问题描述】:

我有这个小代码:

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,但我不是很清楚。

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

谢谢

【问题讨论】:

    标签: numpy scipy python-2.6


    【解决方案1】:

    在 Debian 上,您可以使用 update-alternatives,假设您安装了多个参考实现。

    来自debian wiki

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

    【讨论】:

    • 这是为我做的。详情danielnouri.org/notes/2012/12/19/…
    • 我是唯一一个这样做的人。
    • @Emre 对不起,那没关系。我对 +1 和评论之间的差距感到困惑。
    【解决方案2】:

    我无法确定,因为您没有指定您使用的发行版,但我在 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 ...)
    

    【讨论】:

    • ...顺便说一句,如果选项可用,您会想使用线程选项。
    【解决方案3】:

    从 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 2012-11-07
      • 2012-09-05
      • 2017-06-25
      • 2018-06-19
      • 2021-03-31
      相关资源
      最近更新 更多