簡體   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