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.