Installing lapack for numpy
I was having the same problem and removing the package libopenblas-base did the trick:
sudo apt-get remove libopenblas-base
As already explained by others, several packages provide incompatible versions of liblapack.so.3gf.
According to some bugreports I see around, you may have more than one provider of BLAS/ATLAS/LAPACK installed, like ATLAS and OpenBLAS/GotoBLAS, that conflict with each other. Have a look on this:
$ ls -l /etc/alternatives/*.so.3gf
and check that all them correspond to the same package (eg. they all point into /usr/lib/atlas-base/
)
This issue arises when you have libopenblas-base and libatlas3-base installed, but don't have liblapack3 installed. This combination of packages installs conflicting versions of libblas.so (from OpenBLAS) and liblapack.so (from ATLAS).
Solution 1 (my favorite): You can keep both OpenBLAS and ATLAS on your machine if you also install liblapack3.
sudo apt-get install liblapack3
Solution 2: Uninstall ATLAS (this will actually install liblapack3 for you automatically because of some deb package shenanigans)
sudo apt-get uninstall libatlas3-base
Solution 3: Uninstall OpenBLAS
sudo apt-get uninstall libopenblas-base
Bad configuration
$ dpkg -l | grep 'openblas\|atlas\|lapack'ii libatlas3-base 3.10.1-4 amd64 Automatically Tuned Linear Algebra Software, generic sharedii 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.3liblapack.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_linalgImportError: /usr/lib/liblapack.so.3: undefined symbol: ATL_chemv
Solution 1
$ dpkg -l | grep 'openblas\|atlas\|lapack'ii libatlas3-base 3.10.1-4 amd64 Automatically Tuned Linear Algebra Software, generic sharedii liblapack3 3.5.0-2ubuntu1 amd64 Library of linear algebra routines 3 - shared versionii 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.3liblapack.so.3 auto /usr/lib/lapack/liblapack.so.3$ python -c 'import numpy'
Solution 2
$ dpkg -l | grep 'openblas\|atlas\|lapack'ii liblapack3 3.5.0-2ubuntu1 amd64 Library of linear algebra routines 3 - shared versionii 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.3liblapack.so.3 auto /usr/lib/lapack/liblapack.so.3$ python -c 'import numpy'
Solution 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.3liblapack.so.3 auto /usr/lib/atlas-base/atlas/liblapack.so.3$ python -c 'import numpy'