python - Instalando lapack para numpy
install lapack ubuntu (4)
De acuerdo con algunos informes de errores que veo, es posible que tenga más de un proveedor de BLAS / ATLAS / LAPACK instalado, como ATLAS y OpenBLAS / GotoBLAS, que entran en conflicto entre sí. Echa un vistazo a esto:
$ ls -l /etc/alternatives/*.so.3gf
y compruebe que todos ellos correspondan al mismo paquete (por ejemplo, todos apuntan a /usr/lib/atlas-base/
)
Ejecutando Ubuntu 11.10 + python2.7 ... construido numpy desde la fuente y lo instalé, pero cuando voy a instalarlo, obtengo
ImportError: /usr/lib/liblapack.so.3gf: undefined symbol: ATL_chemv
cuando intenta importar lapack_lite de numpy.linalg. Traté de reconstruir lapack desde cero, pero parece que solo hago
/usr/local/lib/libblas.a
/usr/local/lib/liblapack.a
/usr/local/lib/libtmglib.a
y el archivo .so. ¿De dónde viene el .so.3gf, y cómo lo arreglo?
Estaba teniendo el mismo problema y la eliminación del paquete libopenblas-base hizo el truco:
sudo apt-get remove libopenblas-base
Como ya explicaron otros, varios paquetes proporcionan versiones incompatibles de liblapack.so.3gf.
Este problema surge cuando tiene instaladas libopenblas-base y libatlas3-base , pero no tiene instalado liblapack3 . Esta combinación de paquetes instala versiones conflictivas de libblas.so (de OpenBLAS) y liblapack.so (de ATLAS).
Solución 1 (mi favorito): puede mantener tanto OpenBLAS como ATLAS en su máquina si también instala liblapack3 .
sudo apt-get install liblapack3
Solución 2: Desinstale ATLAS (esto realmente instalará liblapack3 automáticamente debido a algunos engaños del paquete deb)
sudo apt-get uninstall libatlas3-base
Solución 3: Desinstalar OpenBLAS
sudo apt-get uninstall libopenblas-base
Mala configuración
$ dpkg -l | grep ''openblas/|atlas/|lapack''
ii libatlas3-base 3.10.1-4 amd64 Automatically Tuned Linear Algebra Software, generic shared
ii libopenblas-base 0.2.8-6ubuntu1 amd64 Optimized BLAS (linear algebra) library based on GotoBLAS2
$ update-alternatives --get-selections | grep ''blas/|lapack''
libblas.so.3 auto /usr/lib/openblas-base/libblas.so.3
liblapack.so.3 auto /usr/lib/atlas-base/atlas/liblapack.so.3
$ python -c ''import numpy''
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/numpy/__init__.py", line 153, in <module>
from . import add_newdocs
File "/usr/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 13, in <module>
from numpy.lib import add_newdoc
File "/usr/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 18, in <module>
from .polynomial import *
File "/usr/lib/python2.7/dist-packages/numpy/lib/polynomial.py", line 19, in <module>
from numpy.linalg import eigvals, lstsq, inv
File "/usr/lib/python2.7/dist-packages/numpy/linalg/__init__.py", line 50, in <module>
from .linalg import *
File "/usr/lib/python2.7/dist-packages/numpy/linalg/linalg.py", line 29, in <module>
from numpy.linalg import lapack_lite, _umath_linalg
ImportError: /usr/lib/liblapack.so.3: undefined symbol: ATL_chemv
Solución 1
$ dpkg -l | grep ''openblas/|atlas/|lapack''
ii libatlas3-base 3.10.1-4 amd64 Automatically Tuned Linear Algebra Software, generic shared
ii liblapack3 3.5.0-2ubuntu1 amd64 Library of linear algebra routines 3 - shared version
ii libopenblas-base 0.2.8-6ubuntu1 amd64 Optimized BLAS (linear algebra) library based on GotoBLAS2
$ update-alternatives --get-selections | grep ''blas/|lapack''
libblas.so.3 auto /usr/lib/openblas-base/libblas.so.3
liblapack.so.3 auto /usr/lib/lapack/liblapack.so.3
$ python -c ''import numpy''
Solución 2
$ dpkg -l | grep ''openblas/|atlas/|lapack''
ii liblapack3 3.5.0-2ubuntu1 amd64 Library of linear algebra routines 3 - shared version
ii libopenblas-base 0.2.8-6ubuntu1 amd64 Optimized BLAS (linear algebra) library based on GotoBLAS2
$ update-alternatives --get-selections | grep ''blas/|lapack''
libblas.so.3 auto /usr/lib/openblas-base/libblas.so.3
liblapack.so.3 auto /usr/lib/lapack/liblapack.so.3
$ python -c ''import numpy''
Solución 3
$ dpkg -l | grep ''openblas/|atlas/|lapack''
ii libatlas3-base 3.10.1-4 amd64 Automatically Tuned Linear Algebra Software, generic shared
$ update-alternatives --get-selections | grep ''blas/|lapack''
libblas.so.3 auto /usr/lib/atlas-base/atlas/libblas.so.3
liblapack.so.3 auto /usr/lib/atlas-base/atlas/liblapack.so.3
$ python -c ''import numpy''
Intente verificar LD_LIBRARY_PATH. Puede señalar allí otra versión de esa biblioteca que no admita el símbolo que necesita la llamada numpy. Tuve la misma situación en mi Mac.
Pero tenga cuidado, el problema podría no ser visible directamente, porque una biblioteca podría vincularse a la siguiente usando LD_LIBRARY_PATH.
Puede verificar si ve una diferencia en el siguiente comando con y sin el conjunto LD_LIBRARY_PATH (para eliminar temporalmente el shell activo: unset LD_LIBRARY_PATH):
ldd /usr/lib/liblapack.so.3gf
En mi caso, las bibliotecas proporcionadas por el sistema de software ISIS chocaron con las bibliotecas integradas que numpy requiere.