Scipy和Scikitlearn中未定义的符号RedH

2024-10-01 09:17:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在64位Red Hat Enterprise 6.6服务器上安装Scikit Learn,我在该服务器上没有root权限。我已经完成了python2.7.9、Numpy 1.9.2、scipy0.15.1和scikitlearn0.16.1的全新安装。服务器上的Atlas BLAS安装是3.8.4。在

我可以安装scikit learn,但是当我尝试在Python中导入它时,我得到

File "<pyinstall>/site-packages/scipy/parse/linalg/isolve/_iterative.so: undefined symbol: slamch_"

同样,当我跑的时候

^{pr2}$

我得到了16个错误,其中14个是以下未定义符号的导入程序:

  • scipy/cluster/_vq.so: undefined symbol _gfortran_st_write_done
  • scipy/special/_ufuncs.so: undefined symbol dstevr_
  • scipy/linalg/_fblas.so: undefined symbol csyr_
  • scipy/lib/blas/fblas.so: undefined symbol slamch_
  • scipy/lib/lapack/flapack.so: undefined symbol sgbsv_
  • scipy/spatial/qhull.so: undefined symbol _gfortran_st_write_done

我的研究 我发现的一些资料表明,出现这样的问题是因为在编译BLAS/LAPack库和scipy时使用了不匹配的Fortran编译器,例如this mail exchange和2007年的另一个(没有链接,因为我的声誉不够高,不能包含另一个链接;它引用了gfortran_st_write_done符号)。然而,BLAS构建是在只安装了gfortran的服务器上完成的(没有g77或Intel编译器),我重新编译scipy以显式地使用gfortran。在

scipy安装说明还提到,Atlas BLAS附带的LAPACK版本不是完整的实现,并指出如果安装的LAPACK缺少一些功能,可能会发生importer。所以,我按照here的说明安装了lapack3.5.0的完整版本,它也是用gfortran编译的。然后,我重新编译了scipy和sklearn指向更新的库,并收到了相同的导入错误。在

我的问题 除了不匹配的Fortran编译器之外,是否有其他原因导致这些错误?或者,是否需要重新编译另一个库?在


Tags: 服务器so编译器错误scipysymbolblaswrite