Utiliser Atlas depuis scipy

13

J'ai installé Ubuntu 12.04 64 bits. J'ai besoin de travailler avec python et scipy, je les ai installés et quand je lance le test:

python -c "import scipy; scipy.test()"

Je reçois le message:

ImportError: libatlas.so.3gf: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type

Cependant, j'ai des bibliothèques libatlas installées sous le répertoire /usr/lib/atlas-base. Je sais que je peux copier les fichiers directement sous /usr/lib, mais je me demande comment je pourrais configurer le scipy pour utiliser les bibliothèques usr/lib/atlas-base?

lmsasu
la source
Veuillez ne pas croiser le message.
Karlson
Ok, supprimé maintenant.
lmsasu

Réponses:

19

Vous n'avez rien à copier n'importe où.

Vous devez ajouter les bibliothèques d'atlas à la liste des emplacements ldrecherchés.

Dans le répertoire, /etc/ld.so.conf.dvous pouvez ajouter le fichier atlas-lib.conf. Ce fichier doit contenir le répertoire de libatlas.so.3gf, qui est /usr/lib/atlas-base.

Vous pouvez le faire en exécutant

echo "/usr/lib/atlas-base" | sudo tee /etc/ld.so.conf.d/atlas-lib.conf

Enfin, exécutez

sudo ldconfig

à mettre à jour ldpour qu'il connaisse ce nouveau fichier.

Vous pouvez également définir LD_LIBRARY_PATHpour inclure le chemin d'accès à la bibliothèque lorsque vous exécutez et il devrait être disponible dans SciPy.

Karlson
la source
Je ne sais pas si l'atlas-lib.conf a été utile, mais le LD_LIBRARY_PATH a fait l'affaire.
lmsasu
1
@lmsasu Lorsque vous créez ce fichier, vous devrez l'exécuter sudo ldconfigpour le rendre actif
Karlson
Si vous ne disposez pas d'un accès root, quelle serait la meilleure approche? Si vous le faisiez avec virtualenv, comment feriez-vous dans ce cas?
Albert
1
@Albert Using virtualenvest un sujet complètement séparé mais sans accès root, vous pouvez définir LD_LIBRARY_PATHde manière appropriée, ce qui est mentionné dans la réponse.
Karlson
Ce genre de chose devrait être géré par les paquets numpy / scipy ou libatlas-dev, non? J'ai une situation intéressante où le système numpy 1.9.1 fonctionne bien, mais numpy 1.9.2 dans un virtualenv présente ce problème. Quoi qu'il en soit, votre solution l'a corrigé. THX.
drevicko
1

Pour moi, en utilisant un virtualenv, export LD_LIBRARY_PATH=/usr/lib/atlas-base/:${LD_LIBRARY_PATH}à la fin de mon .bashrcfichier, je l'ai corrigé.

Sealander
la source