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