Требует ли Python SciPy BLAS?

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, но я продолжаю получать эту ошибку (после настройки переменной окружения явно).

Ответ 1

Веб-страница 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.

Затем вам нужно будет установить материал LAPACK. Инструкции на странице 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 в таких случаях.

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

Ответ 2

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

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

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

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

pip install scipy

Как может быть.

Ответ 3

В 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".

Ответ 4

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

apt-get install python-numpy python-scipy

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

Ответ 5

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

Ответ 6

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

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

cd ~/src
mv lapack-[tab] LAPACK

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

cd ~/src/LAPACK 
cp lapack_LINUX.a libflapack.a

Ответ 7

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

sudo apt-get install python3-scipy