python numpy installation lapack

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.