Usando Atlas da scipy

13

Eu instalei o Ubuntu 12.04 de 64 bits. Preciso trabalhar com python e scipy, instalei-os e quando executo o teste:

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

Eu recebo a mensagem:

ImportError: libatlas.so.3gf: não é possível abrir o arquivo de objeto compartilhado: Esse arquivo ou diretório não existe

No entanto, tenho libatlas bibliotecas instaladas no diretório /usr/lib/atlas-base. Sei que posso copiar os arquivos diretamente abaixo /usr/lib, mas me pergunto como poderia configurar o scipy para usar as bibliotecas usr/lib/atlas-base?

lmsasu
fonte
Por favor, não cruze a postagem.
Karlson
Ok, removido agora.
Lmsasu 23/10/12

Respostas:

19

Você não precisa copiar nada em nenhum lugar.

Você deve adicionar as bibliotecas do atlas à lista de locais que ldserão pesquisados.

No diretório /etc/ld.so.conf.dvocê pode adicionar o arquivo atlas-lib.conf. Este arquivo deve conter o diretório de libatlas.so.3gf, que é /usr/lib/atlas-base.

Você pode fazer isso executando

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

Finalmente corra

sudo ldconfig

para atualizar ldpara que ele conheça esse novo arquivo.

Como alternativa, você pode definir LD_LIBRARY_PATHo caminho da biblioteca ao executar e ela deve estar disponível no SciPy.

Karlson
fonte
Não tenho certeza se o atlas-lib.conf foi útil, mas o LD_LIBRARY_PATH fez o truque.
Lmsasu 23/10/12
1
@lmsasu Quando você cria esse arquivo você precisará executar sudo ldconfigpara ativá-la
Karlson
Se você não tem acesso root, qual seria a melhor abordagem? Se você o faria virtualenv, como faria nesse caso?
Albert
1
O uso de Albert virtualenvé um assunto completamente separado, mas sem acesso root, você pode definir LD_LIBRARY_PATHda maneira apropriada, mencionada na resposta.
Karlson 15/01
Esse tipo de coisa deve ser tratado por pacotes numpy / scipy ou libatlas-dev, não? Eu tenho uma situação interessante em que o sistema numpy 1.9.1 funciona bem, mas o numpy 1.9.2 em um virtualenv exibe esse problema. De qualquer forma, sua solução a corrigiu. valeu.
drevicko
1

Para mim, usando um virtualenv, export LD_LIBRARY_PATH=/usr/lib/atlas-base/:${LD_LIBRARY_PATH}no final do meu .bashrcarquivo foi corrigido.

Sealander
fonte