您尚未登录。

#1 2019-05-16 15:54:44

jingmouren
会员
注册时间: 2014-09-13
帖子: 112

如何查找openblas安装路径并设置到numpy的查找路径?

我需要按照 https://github.com/juliantaylor/numpy/c … d43b0695b3 安装修改版的 numpy
我下载了numpy的源码,按以上链接修改了.h中的常量
然后 python setup.py build; pip install .
之后import numpy时报如下错误
。。。site-packages/numpy/core/_multiarray_umath.cpython-36m-x86_64-linux-gnu.so: undefined symbol: cblas_sgemm

谢谢

离线

#2 2019-05-16 18:42:02

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: 如何查找openblas安装路径并设置到numpy的查找路径?

你没装 cblas?
但报错是符号找不到而不是库文件找不到。有点奇怪。建议你修改 Arch Linux 里的 numpy 的打包脚本来安装,这样能够避免一些问题。
当然我还有一些其它的想法,比如 ldd 和 objdump -T 看一下那个 so。可我懒得说要怎么用了……

离线

#3 2019-05-17 09:14:32

jingmouren
会员
注册时间: 2014-09-13
帖子: 112

Re: 如何查找openblas安装路径并设置到numpy的查找路径?

https://www.archlinux.org/packages/extr … hon-numpy/ 没有打包脚本啊

ldd 。。。/_multiarray_umath.cpython-36m-x86_64-linux-gnu.so的结果是

    linux-vdso.so.1 (0x00007ffd8e51b000)
    libopenblas.so.3 => /usr/lib/libopenblas.so.3 (0x00007fb9a66ea000)
    libm.so.6 => /usr/lib/libm.so.6 (0x00007fb9a6565000)
    libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fb9a6544000)
    libc.so.6 => /usr/lib/libc.so.6 (0x00007fb9a6380000)
    /usr/lib64/ld-linux-x86-64.so.2 (0x00007fb9a7d39000)
    libgomp.so.1 => /home/jingzhaoxiang/.conda/envs/py36/lib/libgomp.so.1 (0x00007fb9a635a000)
    librt.so.1 => /usr/lib/librt.so.1 (0x00007fb9a634e000)
    libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fb9a6349000)

最近编辑记录 jingmouren (2019-05-17 09:30:30)

离线

#4 2019-05-17 11:43:57

jingmouren
会员
注册时间: 2014-09-13
帖子: 112

Re: 如何查找openblas安装路径并设置到numpy的查找路径?

找到了PKGBUILD
看里头主要也就是
  python setup.py build

python setup.py install --prefix=/usr --root="${pkgdir}" --optimize=1
两句啊
其余的 makedepends=('cblas' 'lapack' 。。。)
options=('staticlibs')
怎么对 python命令起效啊?

离线

#5 2019-05-17 12:45:03

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: 如何查找openblas安装路径并设置到numpy的查找路径?

它只链接了 libopenblas.so.3,而 cblas_sgemm 这个符号是 cblas 提供的。我安装的官方源的 numpy 里是链接了 libcblas.so.3 的。
可能是不同的环境导致了你那里出现了问题。PKGBUILD 里并没有写依赖 openblas,所以你可以尝试卸载 openblas,然后删除 numpy 源码目录中的 build 目录重新编译安装试试。

离线

#6 2019-05-17 14:33:05

jingmouren
会员
注册时间: 2014-09-13
帖子: 112

Re: 如何查找openblas安装路径并设置到numpy的查找路径?

删了build后重编 还是原样错误
另外 openblas 不能移除
报错为:
cblas:移除 openblas 将破坏依赖关系 'blas'
:: lapack:移除 openblas 将破坏依赖关系 'blas

另外,我的问题可能还和conda有关,因为这个是修改过的包,我是conda新建了个虚拟环境装的 但conda别的环境的numpy也没这问题

离线

#7 2019-05-17 15:30:35

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: 如何查找openblas安装路径并设置到numpy的查找路径?

哦。这样就复杂了,我也不了解 conda。你给出完整的编译日志也许有用。

离线

#8 2019-05-17 16:40:10

jingmouren
会员
注册时间: 2014-09-13
帖子: 112

Re: 如何查找openblas安装路径并设置到numpy的查找路径?

我强行在numpy的 system_info.py里删除了openblas的选项
lapack_order = ['mkl', 'atlas', 'accelerate', 'lapack']
装上后终于链上cblas了
libcblas.so.3 => /usr/lib/libcblas.so.3 (0x00007fa49634d000)
libopenblas.so.3 => /usr/lib/libopenblas.so.3 (0x00007fa49511e000)

conda其他环境里好像链到了 libopenblasp.so 的文件名以p结果的一个库,不知道怎么弄的

另外编译日志是啥,怎么弄?

离线

#9 2019-05-17 20:53:15

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: 如何查找openblas安装路径并设置到numpy的查找路径?

就是你编译的时候看到终端的输出。一般是没有关闭的,如果关了的话我也不知道 setup.py 要怎么搞。

离线

页脚