La página web de SciPy solía proporcionar instrucciones de compilación e instalación, pero las instrucciones ahora se basan en distribuciones binarias del sistema operativo. Para compilar SciPy (y NumPy) en sistemas operativos sin paquetes precompilados de las bibliotecas requeridas, debe compilar y luego vincular estáticamente a las bibliotecas Fortran BLAS y 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
Ejecute solo uno de los cinco comandos g77 / gfortran / ifort. He comentado todo, pero el gfortran que uso. La instalación posterior de LAPACK requiere un compilador Fortran 90 , y dado que ambas instalaciones deben usar el mismo compilador Fortran, g77 no debe usarse para BLAS.
A continuación, deberá instalar el material LAPACK. Las instrucciones de la página web de SciPy también me ayudaron aquí, pero tuve que modificarlas para adaptarlas a mi entorno:
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
Actualización el 3 de septiembre de 2015: verificó algunos comentarios hoy (gracias a todos): antes de ejecutar, make lapacklib
edite el make.inc
archivo y agregue la -fPIC
opción OPTS
y la NOOPT
configuración. Si está en una arquitectura de 64 bits o desea compilar una, también agregue -m64
. Es importante que BLAS y LAPACK se compilen con estas opciones configuradas con los mismos valores. Si olvida que -fPIC
SciPy en realidad le dará un error sobre los símbolos que faltan y recomendará este interruptor. La sección específica de se make.inc
ve así en mi configuración:
FORTRAN = gfortran
OPTS = -O2 -frecursive -fPIC -m64
DRVOPTS = $(OPTS)
NOOPT = -O0 -frecursive -fPIC -m64
LOADER = gfortran
En máquinas antiguas (p. Ej., RedHat 5), gfortran podría instalarse en una versión anterior (p. Ej., 4.1.2) y no comprende la opción -frecursive
. Simplemente elimínelo del make.inc
archivo en tales casos.
El objetivo de prueba lapack del Makefile falla en mi configuración porque no puede encontrar las bibliotecas de blas. Si es minucioso, puede mover temporalmente la biblioteca de blas a la ubicación especificada para probar el paquete. Soy una persona perezosa, así que confío en los desarrolladores para que funcione y verifique solo en SciPy.