Usando Atlas de scipy

13

Instalé Ubuntu 12.04 64 bit. Necesito trabajar con python y scipy, los instalé y cuando ejecuto la prueba:

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

Entiendo el mensaje:

ImportError: libatlas.so.3gf: no se puede abrir el archivo de objeto compartido: No existe tal archivo o directorio

Sin embargo, tengo bibliotecas libatlas instaladas en el directorio /usr/lib/atlas-base. Sé que puedo copiar los archivos directamente debajo /usr/lib, pero me pregunto cómo podría configurar el scipy para usar las bibliotecas usr/lib/atlas-base.

lmsasu
fuente
Por favor, no cruce la publicación.
Karlson
Ok, eliminado ahora.
lmsasu

Respuestas:

19

No tienes que copiar nada en ningún lado.

Debe agregar las bibliotecas de atlas a la lista de ubicaciones ldque buscará.

En el directorio /etc/ld.so.conf.dpuede agregar el archivo atlas-lib.conf. Este archivo debe contener el directorio de libatlas.so.3gf, que es /usr/lib/atlas-base.

Puedes hacer esto ejecutando

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

Finalmente corre

sudo ldconfig

actualizar ldpara que sepa sobre este nuevo archivo.

Alternativamente, puede configurar LD_LIBRARY_PATHpara incluir la ruta a la biblioteca cuando ejecuta y debería estar disponible dentro de SciPy.

Karlson
fuente
No estoy seguro de si el atlas-lib.conf fue de ayuda, pero el LD_LIBRARY_PATH hizo el truco.
lmsasu
1
@lmsasu Cuando cree ese archivo, deberá ejecutarlo sudo ldconfigpara activarlo
Karlson el
Si no tiene acceso de root, ¿cuál sería el mejor enfoque? Si lo hicieras virtualenv, ¿cómo lo harías en ese caso?
Albert
1
@Albert Using virtualenves un tema completamente separado, pero sin acceso a la raíz, puede configurarlo LD_LIBRARY_PATHde la manera adecuada que se menciona en la respuesta.
Karlson
Este tipo de cosas debería ser manejado por paquetes numpy / scipy o libatlas-dev, ¿no? Tengo una situación interesante donde el sistema numpy 1.9.1 funciona bien, pero numpy 1.9.2 en un virtualenv exhibe este problema. De todos modos, su solución lo arregló. Gracias.
drevicko
1

Para mí, usando un virtualenv, export LD_LIBRARY_PATH=/usr/lib/atlas-base/:${LD_LIBRARY_PATH}al final de mi .bashrcarchivo lo arreglé.

Sealander
fuente