Ubuntu 11.10 + python2.7を実行しています...ソースからnumpyをビルドしてインストールしましたが、インストールしようとすると、
ImportError: /usr/lib/liblapack.so.3gf: undefined symbol: ATL_chemv
numpy.linalgからlapack_liteをインポートしようとしたとき。私は最初からラパックを再構築しようとしましたが、それはちょうど作るようです
/usr/local/lib/libblas.a
/usr/local/lib/liblapack.a
/usr/local/lib/libtmglib.a
および.soファイル。 .so.3gfはどこから来たのですか、そしてどのように修正しますか?
私は同じ問題を抱えていて、パッケージlibopenblas-baseを削除するとうまくいきました:
Sudo apt-get remove libopenblas-base
他の人がすでに説明したように、いくつかのパッケージはliblapack.so.3gfの互換性のないバージョンを提供します。
私が見ているいくつかのバグレポートによると、ATLASやOpenBLAS/GotoBLASのように、競合するBLAS/ATLAS/LAPACKのプロバイダーが複数インストールされている可能性があります。これを見てください:
$ ls -l /etc/alternatives/*.so.3gf
そして、それらすべてが同じパッケージに対応していることを確認します(たとえば、それらはすべて/usr/lib/atlas-base/
)
この問題は、libopenblas-baseおよびlibatlas3-baseがインストールされているが、liblapackがインストールされていない場合に発生します。このパッケージの組み合わせにより、競合するバージョンのlibblas.so(OpenBLASから)およびliblapack.so(ATLASから)がインストールされます。
解決策1(私のお気に入り):liblapackもインストールすると、OpenBLASとATLASの両方をマシンに保持できます。
Sudo apt-get install liblapack3
解決策2:ATLASをアンインストールします(これにより、実際にはliblapackが自動的にインストールされます。これは、debパッケージの悪意があるためです)。
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
$ 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'
$ 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'
$ 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'
LD_LIBRARY_PATHを確認してください。 numpy呼び出しに必要なシンボルをサポートしない、そのライブラリの別のバージョンをそこにポイントするかもしれません。 Macでも同じ状況でした。
ただし、1つのライブラリがLD_LIBRARY_PATHを使用して次のライブラリにリンクする可能性があるため、問題が直接見えない可能性があることに注意してください。
LD_LIBRARY_PATHが設定されている場合と設定されていない場合(アクティブなシェルから一時的に削除する場合:LD_LIBRARY_PATHの設定を解除する)のコマンドに違いがあるかどうかを確認できます。
ldd /usr/lib/liblapack.so.3gf
私の場合、ISISソフトウェアシステムによって提供されるライブラリが、numpyが必要とするオンボードライブラリと衝突しました。