La page Web SciPy fournissait auparavant des instructions de construction et d'installation, mais les instructions qui s'y trouvent reposent désormais sur des distributions binaires du système d'exploitation. Pour construire SciPy (et NumPy) sur des systèmes d'exploitation sans packages précompilés des bibliothèques requises, vous devez construire puis créer un lien statique vers les bibliothèques Fortran BLAS et 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
Exécutez une seule des cinq commandes g77 / gfortran / ifort. J'ai tout commenté, sauf le gfortran que j'utilise. L'installation suivante de LAPACK nécessite un compilateur Fortran 90 , et comme les deux installations doivent utiliser le même compilateur Fortran, g77 ne doit pas être utilisé pour BLAS.
Ensuite, vous devrez installer les éléments LAPACK. Les instructions de la page Web SciPy m'ont également aidé ici, mais j'ai dû les modifier en fonction de mon environnement:
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
Mise à jour le 3-sept.-2015: Vérifié quelques commentaires aujourd'hui (merci à tous): Avant d'exécuter, make lapacklib
éditez le make.inc
fichier et ajoutez des -fPIC
options OPTS
et des NOOPT
paramètres. Si vous êtes sur une architecture 64 bits ou souhaitez compiler pour une, ajoutez également -m64
. Il est important que BLAS et LAPACK soient compilés avec ces options définies sur les mêmes valeurs. Si vous oubliez, le -fPIC
SciPy vous donnera en fait une erreur sur les symboles manquants et vous recommandera ce commutateur. La section spécifique de make.inc
ressemble à ceci dans ma configuration:
FORTRAN = gfortran
OPTS = -O2 -frecursive -fPIC -m64
DRVOPTS = $(OPTS)
NOOPT = -O0 -frecursive -fPIC -m64
LOADER = gfortran
Sur les anciennes machines (par exemple RedHat 5), gfortran peut être installé dans une version plus ancienne (par exemple 4.1.2) et ne comprend pas l'option -frecursive
. Supprimez-le simplement du make.inc
fichier dans de tels cas.
La cible de test lapack du Makefile échoue dans ma configuration car elle ne trouve pas les bibliothèques blas. Si vous êtes minutieux, vous pouvez déplacer temporairement la bibliothèque blas vers l'emplacement spécifié pour tester le lapack. Je suis une personne paresseuse, donc je fais confiance aux développeurs pour que cela fonctionne et ne vérifie que dans SciPy.