Usando Atlas di Scipy


13

Ho installato Ubuntu 12.04 64 bit. Ho bisogno di lavorare con Python e Scipy, li ho installati e quando eseguo il test:

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

Ricevo il messaggio:

ImportError: libatlas.so.3gf: impossibile aprire il file oggetto condiviso: nessun file o directory

Tuttavia, ho librerie libatlas installate nella directory /usr/lib/atlas-base. So di poter copiare i file direttamente sotto /usr/lib, ma mi chiedo come potrei configurare lo scipy per usare le librerie da usr/lib/atlas-base?


Per favore, non attraversare la posta.
Karlson,

Ok, rimosso ora.
lmsasu,

Risposte:


19

Non devi copiare nulla da nessuna parte.

È necessario aggiungere le librerie dell'atlante all'elenco delle posizioni che ldverranno cercate.

Nella directory /etc/ld.so.conf.dè possibile aggiungere il file atlas-lib.conf. Questo file dovrebbe contenere la directory di libatlas.so.3gf, che è /usr/lib/atlas-base.

Puoi farlo eseguendo

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

Finalmente corri

sudo ldconfig

aggiornare in ldmodo che sia a conoscenza di questo nuovo file.

In alternativa è possibile impostare LD_LIBRARY_PATHl'inclusione del percorso della libreria durante l'esecuzione e dovrebbe essere disponibile in SciPy.


Non sono sicuro se l'atlante-lib.conf sia stato di aiuto, ma LD_LIBRARY_PATH ha fatto il trucco.
lmsasu,

1
@lmsasu Quando crei quel file dovrai eseguirlo sudo ldconfigper renderlo attivo
Karlson,

Se non si dispone dell'accesso root, quale sarebbe l'approccio migliore? Se lo facessi virtualenv, come faresti in quel caso?
Albert,

1
L'utilizzo di @Albert virtualenvè un argomento completamente separato ma senza accesso root è possibile impostare LD_LIBRARY_PATHin modo appropriato, come indicato nella risposta.
Karlson,

Questo genere di cose dovrebbe essere gestito da pacchetti numpy / scipy o libatlas-dev, no? Ho una situazione interessante in cui il sistema numpy 1.9.1 funziona bene, ma numpy 1.9.2 in un virtualenv presenta questo problema. Comunque, la tua soluzione l'ha risolto. grazie.
drevicko,

1

Per me, usando un virtualenv, export LD_LIBRARY_PATH=/usr/lib/atlas-base/:${LD_LIBRARY_PATH}alla fine del mio .bashrcfile è stato risolto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.