numpy.distutils.system_info.BlasNotFoundError:
Blas (http://www.netlib.org/blas/) libraries not found.
Directories to search for the libraries can be specified in the
numpy/distutils/site.cfg file (section [blas]) or by setting
the BLAS environment variable.
De quel fichier ai-je besoin pour télécharger ce site?
J'ai essayé le fortrans, mais je continue à avoir cette erreur (après avoir défini la variable d'environnement évidemment).
La page Web SciPy utilisée pour fournir des instructions de construction et d'installation, mais celles-ci reposent maintenant sur des distributions binaires du système d'exploitation. Pour compiler SciPy (et NumPy) sur des systèmes d'exploitation sans les packages précompilés des bibliothèques requises, vous devez créer un lien statique avec 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
N'exécutez qu'une seule des cinq commandes g77/gfortran/ifort. J'ai tout commenté, sauf le gfortran que j'utilise. L'installation ultérieure de LAPACK nécessite un compilateur Fortran 9 , et puisque les deux installations doivent utiliser le même compilateur Fortran, g77 ne doit pas être utilisé pour BLAS.
Ensuite, vous devrez installer le logiciel LAPACK. Les instructions de la page Web SciPy m'ont également aidé ici, mais je devais les modifier pour les adapter à 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-Sep-2015: Vérifié quelques commentaires aujourd'hui (merci à tous): Avant d'exécuter make lapacklib
éditez le fichier make.inc
et ajoutez l'option -fPIC
à OPTS
et NOOPT
réglages. Si vous utilisez une architecture 64 bits ou souhaitez en compiler 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 signalera une erreur concernant 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 (RedHat 5, par exemple), gfortran peut être installé dans une version antérieure (4.1.2, par exemple) et ne comprend pas l’option -frecursive
. Supprimez-le simplement du fichier make.inc
dans ce cas.
La cible de test lapack du Makefile échoue dans ma configuration car elle ne trouve pas les bibliothèques blas. Si vous êtes rigoureux, vous pouvez déplacer temporairement la bibliothèque blas vers l'emplacement spécifié pour tester le lapack. Je suis une personne paresseuse, alors je fais confiance aux développeurs pour que cela fonctionne et pour vérifier uniquement dans SciPy.
Si vous devez utiliser les dernières versions de SciPy plutôt que la version fournie, sans passer par les tracas de la construction de BLAS et de LAPACK, vous pouvez suivre la procédure ci-dessous.
Installer des bibliothèques d'algèbre linéaire à partir du référentiel (pour Ubuntu),
Sudo apt-get install gfortran libopenblas-dev liblapack-dev
Puis installez SciPy (après avoir téléchargé la source SciPy): python setup.py install
ou
pip install scipy
Selon le cas.
Sur Fedora, cela fonctionne:
yum install lapack lapack-devel blas blas-devel
pip install numpy
pip install scipy
N'oubliez pas d'installer 'lapack-devel' et 'blas-devel' en plus de 'blas' et 'lapack', sinon vous obtiendrez l'erreur que vous avez mentionnée ou le " numpy.distutils.system_info .LapackNotFoundError "erreur.
Je suppose que vous parlez d’installation dans Ubuntu. Il suffit d'utiliser:
apt-get install python-numpy python-scipy
Cela devrait également s’occuper de la compilation des bibliothèques BLAS. Sinon, la compilation des bibliothèques BLAS est très difficile.
Pour les utilisateurs Windows, il existe un package binaire Nice de Chris (attention: 191 Mo de téléchargement):
Suivre les instructions données par 'cfi' fonctionne pour moi, bien que vous ayez besoin de quelques morceaux:
1) Votre répertoire lapack, après avoir décompressé, peut être appelé lapack-X-Y (un numéro de version), vous pouvez donc simplement le renommer LAPACK.
cd ~/src
mv lapack-[tab] LAPACK
2) Dans ce répertoire, vous devrez peut-être faire:
cd ~/src/LAPACK
cp lapack_LINUX.a libflapack.a