Нужен ли Python SciPy BLAS? - PullRequest
       4

Нужен ли Python SciPy BLAS?

171 голосов
/ 21 сентября 2011
numpy.distutils.system_info.BlasNotFoundError: 
    Blas (http://www.netlib.org/blas/) libraries not found.
    Directories to search for the libraries can be specified in the
    numpy/distutils/site.cfg file (section [blas]) or by setting
    the BLAS environment variable.

Какой tar мне нужно скачать с этого сайта?

Я пробовал fortrans, но продолжаю получать эту ошибку (очевидно, после установки переменной окружения).

Ответы [ 7 ]

327 голосов
/ 27 января 2013

Если вам нужно использовать последние версии SciPy, а не упакованную версию, не прибегая к хлопотам сборки BLAS и LAPACK, вы можете выполнить следующую процедуру.

Установка библиотек линейной алгебры из репозитория (для Ubuntu),

sudo apt-get install gfortran libopenblas-dev liblapack-dev

Затем установите SciPy, (после загрузки источника SciPy): python setup.py install или

pip install scipy

В зависимости от обстоятельств.

140 голосов
/ 07 февраля 2012

Веб-страница SciPy использовалась для предоставления инструкций по сборке и установке, но инструкции там теперь основаны на бинарных дистрибутивах ОС.Чтобы собрать SciPy (и NumPy) в операционных системах без предварительно скомпилированных пакетов необходимых библиотек, вы должны собрать, а затем статически связать библиотеки Fortran BLAS и LAPACK :

mkdir -p ~/src/
cd ~/src/
wget http://www.netlib.org/blas/blas.tgz
tar xzf blas.tgz
cd BLAS-*

## NOTE: The selected Fortran compiler must be consistent for BLAS, LAPACK, NumPy, and SciPy.
## For GNU compiler on 32-bit systems:
#g77 -O2 -fno-second-underscore -c *.f                     # with g77
#gfortran -O2 -std=legacy -fno-second-underscore -c *.f    # with gfortran
## OR for GNU compiler on 64-bit systems:
#g77 -O3 -m64 -fno-second-underscore -fPIC -c *.f                     # with g77
gfortran -O3 -std=legacy -m64 -fno-second-underscore -fPIC -c *.f    # with gfortran
## OR for Intel compiler:
#ifort -FI -w90 -w95 -cm -O3 -unroll -c *.f

# Continue below irrespective of compiler:
ar r libfblas.a *.o
ranlib libfblas.a
rm -rf *.o
export BLAS=~/src/BLAS-*/libfblas.a

Выполнить только одну из пяти команд g77 / gfortran / ifort.Я закомментировал все, кроме gfortran, который я использую.Для последующей установки LAPACK требуется компилятор Fortran 90 , и, поскольку обе установки должны использовать один и тот же компилятор Fortran, g77 не должен использоваться для BLAS.

Далее вам необходимо установитьНЕДОРОГОИнструкции веб-страницы SciPy также помогли мне в этом, но мне пришлось изменить их в соответствии со своей средой:

mkdir -p ~/src
cd ~/src/
wget http://www.netlib.org/lapack/lapack.tgz
tar xzf lapack.tgz
cd lapack-*/
cp INSTALL/make.inc.gfortran make.inc          # On Linux with lapack-3.2.1 or newer
make lapacklib
make clean
export LAPACK=~/src/lapack-*/liblapack.a

Обновление от 3 сентября 2015 года: Проверено несколько комментариев сегодня (спасибо всем): Перед запускомmake lapacklib отредактируйте файл make.inc и добавьте параметр -fPIC к настройкам OPTS и NOOPT.Если вы используете 64-битную архитектуру или хотите скомпилировать ее, также добавьте -m64.Важно, чтобы BLAS и LAPACK были скомпилированы с одинаковыми значениями этих параметров.Если вы забудете, -fPIC SciPy на самом деле выдаст вам ошибку об отсутствующих символах и порекомендует этот переключатель.Конкретный раздел make.inc выглядит так в моей настройке:

FORTRAN  = gfortran 
OPTS     = -O2 -frecursive -fPIC -m64
DRVOPTS  = $(OPTS)
NOOPT    = -O0 -frecursive -fPIC -m64
LOADER   = gfortran

На старых машинах (например, RedHat 5), gfortran может быть установлен в более старой версии (например, 4.1.2) и не понимаетопция -frecursive.Просто удалите его из файла make.inc в таких случаях.

Цель теста lapack из Makefile не удалась в моей настройке, потому что он не может найти библиотеки blas.Если вы внимательны, вы можете временно переместить библиотеку blas в указанное место, чтобы протестировать ноутбук.Я ленивый человек, поэтому я доверяю разработчикам, чтобы он работал и проверял только в SciPy.

66 голосов
/ 08 марта 2013

На Fedora это работает:

 yum install lapack lapack-devel blas blas-devel
 pip install numpy
 pip install scipy

Не забудьте установить ' lapack-devel ' и ' blas-devel ' в дополнение к 'blas' и 'lapack', в противном случае вы получите указанную вами ошибку или Ошибка «numpy.distutils.system_info. LapackNotFoundError ».

44 голосов
/ 12 декабря 2011

Полагаю, вы говорите об установке в Ubuntu.Просто используйте:

apt-get install python-numpy python-scipy

Это должно позаботиться и о компиляции библиотек BLAS.Иначе, компиляция библиотек BLAS очень сложна.

12 голосов
/ 11 июля 2014

Для пользователей Windows есть хороший двоичный пакет Криса (предупреждение: это довольно большая загрузка, 191 МБ):

2 голосов
/ 09 апреля 2012

Следуя инструкциям, приведенным в 'cfi', у меня работает, хотя есть несколько частей, которые вам могут понадобиться:

1) Ваш каталог lapack, после распаковки, может называться lapack-XY(некоторый номер версии), так что вы можете просто переименовать его в LAPACK.

cd ~/src
mv lapack-[tab] LAPACK

2) В этом каталоге вам может понадобиться:

cd ~/src/LAPACK 
cp lapack_LINUX.a libflapack.a
0 голосов
/ 23 октября 2014

Попробуйте использовать

sudo apt-get install python3-scipy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...