Installing lapack for numpy

后端 未结 4 954
庸人自扰
庸人自扰 2020-12-01 10:14

Running Ubuntu 11.10 + python2.7...built numpy from source and installed it, but when I go to install it, I get

ImportError: /usr/lib/liblapack.so.3gf: unde         


        
4条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-01 11:00

    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 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 "", line 1, in 
      File "/usr/lib/python2.7/dist-packages/numpy/__init__.py", line 153, in 
        from . import add_newdocs
      File "/usr/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 13, in 
        from numpy.lib import add_newdoc
      File "/usr/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 18, in 
        from .polynomial import *
      File "/usr/lib/python2.7/dist-packages/numpy/lib/polynomial.py", line 19, in 
        from numpy.linalg import eigvals, lstsq, inv
      File "/usr/lib/python2.7/dist-packages/numpy/linalg/__init__.py", line 50, in 
        from .linalg import *
      File "/usr/lib/python2.7/dist-packages/numpy/linalg/linalg.py", line 29, in 
        from numpy.linalg import lapack_lite, _umath_linalg
    ImportError: /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 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'
    

    Solution 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'
    

    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.3
    liblapack.so.3                 auto     /usr/lib/atlas-base/atlas/liblapack.so.3
    $ python -c 'import numpy'
    

提交回复
热议问题