2015-05-24 5 views
4

Я пытаюсь установить 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.Неопределенные символы в Scipy и Scikit-learn на RedHat

Я могу установить scikit учиться, но когда я пытаюсь импортировать его в 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, например this mail exchange, а другой - с 2007 года (не связано, потому что моя репутация недостаточно высока, чтобы включить другую ссылку, она ссылается на символ _gfortran_st_write_done). Тем не менее, сборка BLAS была выполнена на сервере, на котором установлен gfortran (нет компиляторов g77 или Intel), и я перекомпилировал scipy, чтобы явно использовать gfortran.

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

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

+0

Второй почтовый обмен, ссылающийся на символ _gfortran_st_write_done, [здесь] (http://mail.scipy.org/pipermail/scipy-user/2007-December/014944.html). – denbro42

+0

Вы пробовали просто использовать anaconda вместо того, чтобы самому собрать все? –

+0

Это действительно работает отлично, спасибо. Хотел бы я подумать об этом раньше! – denbro42

ответ

0

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