30

Ubuntu 11.10 + python2.7を実行しています...ソースからnumpyをビルドしてインストールしましたが、インストールしようとすると、

ImportError: /usr/lib/liblapack.so.3gf: undefined symbol: ATL_chemv

numpy.linalg から lapack_lite をインポートしようとしたとき。lapack をゼロから再構築しようとしましたが、作成するだけのようです

/usr/local/lib/libblas.a
/usr/local/lib/liblapack.a
/usr/local/lib/libtmglib.a

および .so ファイル。.so.3gf はどこから来て、どのように修正すればよいですか?

4

4 に答える 4

61

私は同じ問題を抱えていて、パッケージ libopenblas-base を削除するとうまくいきました:

sudo apt-get remove libopenblas-base

すでに他の人が説明したように、いくつかのパッケージは互換性のないバージョンの liblapack.so.3gf を提供しています。

于 2012-03-15T02:11:10.700 に答える
9

私が周りで見ているいくつかのバグレポートによると、ATLASやOpenBLAS / GotoBLASなど、BLAS / ATLAS/LAPACKのプロバイダーが複数インストールされている可能性があります。これを見てください:

$ ls -l /etc/alternatives/*.so.3gf

そして、それらすべてが同じパッケージに対応していることを確認します(たとえば、それらはすべてを指します/usr/lib/atlas-base/

于 2012-01-20T15:12:09.507 に答える
4

この問題は、libopenblas-baselibatlas3-baseがインストールされているが、 liblapack3がインストールされていない場合に発生します。このパッケージの組み合わせは、競合するバージョンのlibblas.so (OpenBLAS から) とliblapack.so (ATLAS から) をインストールします。

解決策 1 (私のお気に入り): liblapack3もインストールすると、OpenBLAS と ATLAS の両方をマシンに保持できます。

sudo apt-get install liblapack3

解決策 2: ATLAS をアンインストールします (一部の deb パッケージの悪ふざけにより、実際には自動的にliblapack3がインストールされます)。

sudo apt-get uninstall libatlas3-base

解決策 3: OpenBLAS をアンインストールする

sudo apt-get uninstall libopenblas-base


不適切な構成

$ 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

解決策 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'

解決策 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'

解決策 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'
于 2016-01-22T21:49:23.893 に答える
1

LD_LIBRARY_PATH を確認してみてください。numpy 呼び出しが必要とするシンボルをサポートしていない、そのライブラリの別のバージョンを指している可能性があります。私のMacでも同じ状況がありました。

ただし、LD_LIBRARY_PATH を使用して 1 つのライブラリが次のライブラリにリンクする可能性があるため、問題が直接見えない可能性があることに注意してください。

次のコマンドで、LD_LIBRARY_PATH が設定されている場合と設定されていない場合の違いを確認できます (アクティブなシェルから一時的に削除するには、LD_LIBRARY_PATH の設定を解除します)。

ldd /usr/lib/liblapack.so.3gf

私の場合、ISIS ソフトウェア システムによって提供されるライブラリは、numpy が必要とするオンボード ライブラリと衝突しました。

于 2012-01-24T16:01:00.027 に答える