Неопределенные символы в Scipy и Scikit-learn в RedHat

Я пытаюсь установить Scikit-Learn на 64-битный сервер Red Hat Enterprise 6.6, на котором у меня нет привилегий root. Я сделал новую установку 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

Мои исследования Несколько источников, которые я обнаружил, предполагают, что подобные проблемы возникают из-за несоответствующего компилятора Фортрана при компиляции библиотек BLAS/LAPack и scipy, например, этого почтового обмена и другого из 2007 (не связано, потому что моя репутация недостаточно высока, чтобы включить другую ссылку, она ссылается на символ _gfortran_st_write_done). Однако сборка BLAS была выполнена на сервере, на котором установлен только gfortran (без компиляторов g77 или Intel), и я перекомпилировал scipy, чтобы явно использовать gfortran.

В примечаниях по установке scipy также упоминается, что версия LAPACK, которая поставляется с Atlas BLAS, не является полной реализацией, и говорится, что ImportErrors может возникать, если в установленном LAPACK отсутствуют некоторые функции. Итак, я следовал приведенным здесь инструкциям, чтобы установить полную версию LAPACK 3.5.0, также скомпилированную с gfortran. Затем я перекомпилировал scipy и sklearn, указав на обновленные библиотеки, и получил те же ошибки импорта.

Мой вопрос Есть ли что-то, что может вызывать эти ошибки, кроме несовпадающих компиляторов Fortran? Кроме того, есть ли другая библиотека, которую мне нужно перекомпилировать?

1 ответ

Решение

Спасибо Andreas Mueller за совет: выполнение локальной установки anaconda в каталог, которым я владел, помогло решить проблемы с компиляцией.

Другие вопросы по тегам