Установка lapack для numpy
под управлением Ubuntu 11.10 + вместо python2.7...построен numpy из источника и установлен, но когда я иду, чтобы установить его, я получаю
ImportError: /usr/lib/liblapack.so.3gf: undefined symbol: ATL_chemv
когда он пытается импортировать lapack_lite из numpy.linalg. Я попытался восстановить lapack с нуля, но, похоже, просто сделать
/usr/local/lib/libblas.a
/usr/local/lib/liblapack.a
/usr/local/lib/libtmglib.a
а .так файл. Где делает .так.3gf, и как это исправить?
4 ответов
У меня была такая же проблема, и удаление пакета libopenblas-base сделало трюк:
sudo apt-get remove libopenblas-base
Как уже объясняли другие, несколько пакетов предоставляют несовместимые версии liblapack.Итак.3gf.
согласно некоторым багрепортам, которые я вижу вокруг, у вас может быть более одного поставщика BLAS/ATLAS/LAPACK, таких как ATLAS и OpenBLAS/GotoBLAS, которые конфликтуют друг с другом. Взгляните на это:
$ ls -l /etc/alternatives/*.so.3gf
и проверьте, что все они соответствуют одному и тому же пакету (например. все они указывают на /usr/lib/atlas-base/
)
эта проблема возникает, когда у вас есть libopenblas-base и libatlas3-базы установлен, но пока нет liblapack3 установлен. Эта комбинация пакетов устанавливает конфликтующие версииlibblas.так что (из OpenBLAS) и liblapack.так что (из атласа).
Решение 1 (мое любимое): вы можете сохранить OpenBLAS и ATLAS на своем компьютере, если вы также установите liblapack3.
sudo apt-get install liblapack3
решение 2: Удалите ATLAS (это фактически установит liblapack3 для вас автоматически из-за некоторых махинаций пакета 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
Решение 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'
попробуйте проверить LD_LIBRARY_PATH. Вы можете указать там на другую версию этой библиотеки, которая не поддерживает символ, необходимый вызову numpy. У меня была такая же ситуация на моем Mac.
но будьте осторожны, проблема может быть не видна напрямую, потому что одна библиотека может ссылаться на следующую, используя LD_LIBRARY_PATH.
вы можете проверить, видите ли вы разницу в следующей команде с и без набора LD_LIBRARY_PATH (временно удалить для активная оболочка: unset LD_LIBRARY_PATH):
ldd / usr/lib / liblapack.Итак.3gf
в моем случае библиотеки, предоставляемые программной системой ISIS, столкнулись с бортовыми библиотеками, которые требуются numpy.