页次: 1
我需要按照 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
谢谢
离线
你没装 cblas?
但报错是符号找不到而不是库文件找不到。有点奇怪。建议你修改 Arch Linux 里的 numpy 的打包脚本来安装,这样能够避免一些问题。
当然我还有一些其它的想法,比如 ldd 和 objdump -T 看一下那个 so。可我懒得说要怎么用了……
离线
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)
离线
找到了PKGBUILD
看里头主要也就是
python setup.py build
和
python setup.py install --prefix=/usr --root="${pkgdir}" --optimize=1
两句啊
其余的 makedepends=('cblas' 'lapack' 。。。)
options=('staticlibs')
怎么对 python命令起效啊?
离线
它只链接了 libopenblas.so.3,而 cblas_sgemm 这个符号是 cblas 提供的。我安装的官方源的 numpy 里是链接了 libcblas.so.3 的。
可能是不同的环境导致了你那里出现了问题。PKGBUILD 里并没有写依赖 openblas,所以你可以尝试卸载 openblas,然后删除 numpy 源码目录中的 build 目录重新编译安装试试。
离线
删了build后重编 还是原样错误
另外 openblas 不能移除
报错为:
cblas:移除 openblas 将破坏依赖关系 'blas'
:: lapack:移除 openblas 将破坏依赖关系 'blas
另外,我的问题可能还和conda有关,因为这个是修改过的包,我是conda新建了个虚拟环境装的 但conda别的环境的numpy也没这问题
离线
哦。这样就复杂了,我也不了解 conda。你给出完整的编译日志也许有用。
离线
我强行在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结果的一个库,不知道怎么弄的
另外编译日志是啥,怎么弄?
离线
就是你编译的时候看到终端的输出。一般是没有关闭的,如果关了的话我也不知道 setup.py 要怎么搞。
离线
页次: 1