Korzystanie z Atlasu z Scipy

13

Zainstalowałem Ubuntu 12.04 64-bit. Muszę pracować z Pythonem i Scipy, zainstalowałem je i po uruchomieniu testu:

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

Dostaję wiadomość:

ImportError: libatlas.so.3gf: nie można otworzyć udostępnionego pliku obiektu: brak takiego pliku lub katalogu

Mam jednak biblioteki libatlas zainstalowane w tym katalogu /usr/lib/atlas-base. Wiem, że mogę skopiować pliki bezpośrednio pod /usr/lib, ale zastanawiam się, jak skonfigurować Scipy do korzystania z bibliotek usr/lib/atlas-base?

lmsasu
źródło
Proszę nie przechodzić przez pocztę.
Karlson
Ok, teraz usunięte.
lmsasu

Odpowiedzi:

19

Nigdzie nie musisz niczego kopiować.

Należy dodać biblioteki atlasu do listy ldprzeszukiwanych lokalizacji .

W katalogu /etc/ld.so.conf.dmożesz dodać plik atlas-lib.conf. Ten plik powinien zawierać katalog libatlas.so.3gf, który jest /usr/lib/atlas-base.

Możesz to zrobić, uruchamiając

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

Wreszcie biegnij

sudo ldconfig

zaktualizować, ldaby wiedział o tym nowym pliku.

Alternatywnie możesz ustawić LD_LIBRARY_PATHwłączenie ścieżki do biblioteki podczas uruchamiania i powinna ona być dostępna w SciPy.

Karlson
źródło
Nie jestem pewien, czy atlas-lib.conf był pomocny, ale LD_LIBRARY_PATH załatwił sprawę.
lmsasu
1
@lmsasu Po utworzeniu tego pliku należy go uruchomić, sudo ldconfigaby go uaktywnić
Karlson,
Jeśli nie masz dostępu do roota, jakie byłoby najlepsze podejście? Gdybyś to zrobił virtualenv, jak byś zrobił w takim przypadku?
Albert,
1
@Albert Korzystanie virtualenvjest całkowicie odrębnym tematem, ale bez dostępu do katalogu głównego możesz ustawić LD_LIBRARY_PATHw odpowiedni sposób, który jest wymieniony w odpowiedzi.
Karlson,
Taką sprawą powinny zajmować się pakiety numpy / scipy lub libatlas-dev, prawda? Mam interesującą sytuację, w której system numpy 1.9.1 działa dobrze, ale numpy 1.9.2 w virtualenv wykazuje ten problem. W każdym razie twoje rozwiązanie to naprawiło. dzięki.
drevicko
1

Dla mnie, używając virtualenv, export LD_LIBRARY_PATH=/usr/lib/atlas-base/:${LD_LIBRARY_PATH}na końcu mojego .bashrcpliku to naprawiłem.

Sealander
źródło