A página da Web SciPy costumava fornecer instruções de compilação e instalação, mas as instruções agora contam com distribuições binárias do SO. Para criar o SciPy (e NumPy) em sistemas operacionais sem pacotes pré-compilados das bibliotecas necessárias, você deve construir e vincular estaticamente às bibliotecas Fortran BLAS e 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
Execute apenas um dos cinco comandos g77 / gfortran / ifort. Eu comentei tudo, mas o gfortran que eu uso. A instalação subsequente do LAPACK requer um compilador Fortran 90 e, como ambas as instalações devem usar o mesmo compilador Fortran, o g77 não deve ser usado para o BLAS.
Em seguida, você precisará instalar o material LAPACK. As instruções da página SciPy também me ajudaram aqui, mas tive que modificá-las para se adequar ao meu ambiente:
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
Atualização em 3 de setembro de 2015: verificados alguns comentários hoje (obrigado a todos): Antes de executar, make lapacklib
edite o make.inc
arquivo e adicione a -fPIC
opção OPTS
e NOOPT
configurações. Se você estiver em uma arquitetura de 64 bits ou quiser compilar uma, adicione também -m64
. É importante que o BLAS e o LAPACK sejam compilados com essas opções definidas com os mesmos valores. Se você esquecer o -fPIC
SciPy, na verdade, ocorrerá um erro sobre a falta de símbolos e recomendará essa opção. A seção específica se make.inc
parece com isso na minha configuração:
FORTRAN = gfortran
OPTS = -O2 -frecursive -fPIC -m64
DRVOPTS = $(OPTS)
NOOPT = -O0 -frecursive -fPIC -m64
LOADER = gfortran
Em máquinas antigas (por exemplo, RedHat 5), o gfortran pode ser instalado em uma versão mais antiga (por exemplo, 4.1.2) e não entende a opção -frecursive
. Simplesmente remova-o do make.inc
arquivo nesses casos.
O alvo de teste lapack do Makefile falha na minha instalação porque não consegue encontrar as bibliotecas blas. Se você for completo, poderá mover temporariamente a biblioteca blas para o local especificado para testar o lapack. Como sou uma pessoa preguiçosa, confio nos desenvolvedores para que funcionem e verifiquem apenas no SciPy.