gpt4 book ai didi

python - scipy给出了 undefined symbol : clapack_sgesv

转载 作者:行者123 更新时间:2023-12-02 10:55:18 25 4
gpt4 key购买 nike

我想有一个干净的开始,所以我自己编写了一个
最新的ATLAS,Lapack和Python 2.7.3的副本。

我已经安装了numpy,它可以从ATLAS重新识别BLAS
和以下作品...

  python
import numpy
numpy.test()

但是,科学并不容易!
$ python
Python 2.7.3 (default, Jan 14 2013, 13:13:35)
[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import scipy.linalg
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/projects/nrel/cid/ladab/pkgi/lib/python2.7/site-packages/scipy/linalg/__init__.py", line 133, in <module>
from basic import *
File "/projects/nrel/cid/ladab/pkgi/lib/python2.7/site-packages/scipy/linalg/basic.py", line 12, in <module>
from lapack import get_lapack_funcs
File "/projects/nrel/cid/ladab/pkgi/lib/python2.7/site-packages/scipy/linalg/lapack.py", line 15, in <module>
from scipy.linalg import clapack
ImportError: /projects/nrel/cid/ladab/pkgi/lib/python2.7/site-packages/scipy/linalg/clapack.so: undefined symbol:
+clapack_sgesv

$ which python
/projects/nrel/cid/ladab/pkgi/bin/python

$ ldd /projects/nrel/cid/ladab/pkgi/lib/python2.7/site-packages/scipy/linalg/clapack.so
linux-vdso.so.1 => (0x00007fff57bff000)
libgfortran.so.3 => /usr/lib64/libgfortran.so.3 (0x00007f9229192000)
libm.so.6 => /lib64/libm.so.6 (0x00007f9228ef4000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f9228cde000)
libc.so.6 => /lib64/libc.so.6 (0x00007f922894b000)
/lib64/ld-linux-x86-64.so.2 (0x000000387dc00000)

$ cat scipy-0.11.0/site.cfg
[DEFAULT]
library_dirs = /projects/nrel/cid/ladab/pkgi/lib
include_dirs = /projects/nrel/cid/ladab/pkgi/include
[blas_opt]
libraries = f77blas, cblas, atlas
[lapack_opt]
libraries = lapack, f77blas, cblas, atlas

$ env | egrep python
PYTHONPATH=/projects/nrel/cid/ladab/pkgi/lib/python2.7/site-packages

搜索clapack_sgesv的定义,在site-packages/scipy中找不到任何定义:
$ cd /projects/nrel/cid/ladab/pkgi/lib/python2.7/site-packages/scipy/linalg

$ for ii in *.so; do echo ========== $ii; nm $ii | egrep clapack_sgesv
> done
========== atlas_version.so
========== calc_lwork.so
========== cblas.so
========== clapack.so
U clapack_sgesv
00000000002103e0 d doc_f2py_rout_clapack_sgesv
0000000000009810 t f2py_rout_clapack_sgesv
========== fblas.so
========== flapack.so
========== _flinalg.so

显然可以在LD_LIBRARY_PATH上找到它,但是很科学
没有使用它...
$ echo $LD_LIBRARY_PATH
/projects/nrel/cid/ladab/pkgi/lib:/usr/lib64

$ cd /projects/nrel/cid/ladab/pkgi/lib

$ for ii in *.so; do echo ========== $ii; nm $ii | egrep clapack_sgesv; done
========== libsatlas.so
0000000000094ce0 T clapack_sgesv
========== libtatlas.so
00000000000accb0 T clapack_sgesv

你有什么建议吗?

最佳答案

非常感谢Adam Cadien的评论……http://www.scipy.org/Installing_SciPy/Linux中“在Ubuntu上使用gfortran从源代码构建一切的所有内容(2010年11月)”中的部分仍然有效。

关于python - scipy给出了 undefined symbol : clapack_sgesv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14345974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com