неопределенный символ: clapack_sgesv - PullRequest
4 голосов
/ 11 января 2012

У меня есть этот маленький код:

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 ]

4 голосов
/ 20 ноября 2012

В Debian вы можете использовать update-alternatives при условии, что у вас установлено не только эталонная реализация.

Из вики Debian

update-alternatives --config liblapack.so.3
update-alternatives --config libblas.so.3
3 голосов
/ 07 февраля 2012

Я не могу быть уверен, поскольку вы не указали, какой дистрибутив вы используете, но я столкнулся с той же проблемой в 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 ...)
1 голос
/ 10 июня 2013

Я получил эту проблему после обновления с Ubuntu 12.04 до 12.10. Проблема заключалась в том, что у меня было две версии scipy, установленные в /usr/local/lib/python2.7/dist-packages. Чтобы исправить проблему я сделал:

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