繁体   English   中英

Scipy和Scikit中未定义的符号 - 在RedHat上学习

[英]Undefined symbols in Scipy and Scikit-learn on RedHat

我正在尝试在没有root权限的64位Red Hat Enterprise 6.6服务器上安装Scikit-Learn。 我已经完成了Python 2.7.9,Numpy 1.9.2,Scipy 0.15.1和Scikit-Learn 0.16.1的全新安装。 服务器上的Atlas BLAS安装是3.8.4。

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

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

同样,当我跑

>>> import scipy; scipy.test()

我得到16个错误,其中14个是以下未定义符号的ImportErrors:

  • 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

我的研究我发现有几个来源提出这样的问题是因为Fortran编译器在编译BLAS / LAPack库和scipy时不匹配,例如这个邮件交换和2007年的另一个(没有链接,因为我的声誉不够高包含另一个链接;它引用了_gfortran_st_write_done符号)。 但是,BLAS构建是在只安装了gfortran的服务器上完成的(没有g77或Intel编译器),我重新编译scipy以明确使用gfortran。

scipy安装说明还提到Atlas BLAS附带的LAPACK版本不是完整的实现,并且如果安装的LAPACK缺少某些功能,则可能会出现ImportErrors。 所以,我按照这里的说明安装了完整版的LAPACK 3.5.0,也是用gfortran编译的。 然后我重新编译scipy和sklearn指向更新的库,并收到相同的导入错误。

我的问题除了不匹配的Fortran编译器之外,还有什么可能导致这些错误吗? 或者,是否有另一个我需要重新编译的库?

感谢Andreas Mueller提示:在本地安装的anaconda安装到我所拥有的目录中解决了编译问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM