Die SciPy-Webseite , auf der Anweisungen zum Erstellen und Installieren bereitgestellt wurden, basiert jedoch jetzt auf binären Betriebssystemverteilungen. Um SciPy (und NumPy) auf Betriebssystemen ohne vorkompilierte Pakete der erforderlichen Bibliotheken zu erstellen, müssen Sie die Fortran-Bibliotheken BLAS und LAPACK erstellen und anschließend statisch verknüpfen :
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
Führen Sie nur einen der fünf Befehle g77 / gfortran / ifort aus. Ich habe alles auskommentiert, außer dem Gfortran, den ich benutze. Für die nachfolgende LAPACK-Installation ist ein Fortran 90- Compiler erforderlich. Da beide Installationen denselben Fortran-Compiler verwenden sollten, sollte g77 nicht für BLAS verwendet werden.
Als nächstes müssen Sie das LAPACK-Zeug installieren. Die Anweisungen der SciPy-Webseite haben mir auch hier geholfen, aber ich musste sie an meine Umgebung anpassen:
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
Update am 3. September 2015: Einige Kommentare wurden heute überprüft (danke an alle): make lapacklib
Bearbeiten Sie vor dem Ausführen die make.inc
Datei und fügen Sie -fPIC
Optionen OPTS
und NOOPT
Einstellungen hinzu. Wenn Sie sich in einer 64-Bit-Architektur befinden oder für eine kompilieren möchten, fügen Sie ebenfalls hinzu -m64
. Es ist wichtig, dass BLAS und LAPACK mit diesen Optionen kompiliert werden, die auf dieselben Werte eingestellt sind. Wenn Sie vergessen, dass der -fPIC
SciPy tatsächlich einen Fehler über fehlende Symbole ausgibt und diesen Schalter empfiehlt. Der spezifische Abschnitt von make.inc
sieht in meinem Setup folgendermaßen aus:
FORTRAN = gfortran
OPTS = -O2 -frecursive -fPIC -m64
DRVOPTS = $(OPTS)
NOOPT = -O0 -frecursive -fPIC -m64
LOADER = gfortran
Auf alten Computern (z. B. RedHat 5) ist gfortran möglicherweise in einer älteren Version (z. B. 4.1.2) installiert und versteht die Option nicht -frecursive
. Entfernen Sie es make.inc
in solchen Fällen einfach aus der Datei.
Das Lapack-Testziel des Makefiles schlägt in meinem Setup fehl, da die Blas-Bibliotheken nicht gefunden werden können. Wenn Sie gründlich sind, können Sie die Blas-Bibliothek vorübergehend an den angegebenen Speicherort verschieben, um den Lapack zu testen. Ich bin eine faule Person, daher vertraue ich darauf, dass die Entwickler es funktionieren lassen und nur in SciPy überprüfen.