Использование Атласа от Scipy

13

Я установил Ubuntu 12.04 64 бит. Мне нужно работать с Python и Scipy, я установил их и при запуске теста:

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

Я получаю сообщение:

ImportError: libatlas.so.3gf: невозможно открыть общий объектный файл: такого файла или каталога нет

Тем не менее, у меня есть библиотеки libatlas, установленные в каталоге /usr/lib/atlas-base. Я знаю, что могу копировать файлы прямо под /usr/lib, но мне интересно, как я мог настроить scipy для использования библиотек usr/lib/atlas-base?

lmsasu
источник
Пожалуйста, не пересекайте пост.
Карлсон
Хорошо, сейчас удалено.
lmsasu

Ответы:

19

Вам не нужно ничего копировать в любом месте.

Вы должны добавить библиотеки атласа в список мест ldпоиска.

В каталог /etc/ld.so.conf.dвы можете добавить файл atlas-lib.conf. Этот файл должен содержать каталог libatlas.so.3gf, который есть /usr/lib/atlas-base.

Вы можете сделать это, запустив

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

Наконец запустить

sudo ldconfig

обновить, ldчтобы он знал об этом новом файле.

В качестве альтернативы вы можете указать LD_LIBRARY_PATHпуть к библиотеке при запуске, и он должен быть доступен в SciPy.

Карлсон
источник
Я не уверен, помог ли atlas-lib.conf, но LD_LIBRARY_PATH добились цели.
lmsasu
1
@lmsasu Когда вы создадите этот файл, вам нужно будет запустить его, sudo ldconfigчтобы сделать его активным
Карлсон
Если у вас нет доступа с правами root, что будет лучшим подходом? Если бы вы сделали это virtualenv, как бы вы поступили в этом случае?
Альберт
1
@Albert Using virtualenv- это совершенно отдельная тема, но без корневого доступа вы можете установить LD_LIBRARY_PATHсоответствующий способ, который упоминается в ответе.
Карлсон
Такого рода вещи должны обрабатываться пакетами numpy / scipy или libatlas-dev, нет? У меня интересная ситуация, когда система numpy 1.9.1 работает нормально, но numpy 1.9.2 в virtualenv демонстрирует эту проблему. В любом случае, ваше решение исправило это. Спасибо.
drevicko
1

Для меня, используя virtualenv, export LD_LIBRARY_PATH=/usr/lib/atlas-base/:${LD_LIBRARY_PATH}в конце моего .bashrcфайла это исправили.

Sealander
источник