Python 为numpy安装lapack

Python 为numpy安装lapack,python,numpy,installation,lapack,Python,Numpy,Installation,Lapack,运行Ubuntu11.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/libtm

运行Ubuntu11.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从何而来,我如何修复它?

根据我看到的一些错误报告,您可能安装了多个BLAS/ATLAS/LAPACK提供商,如ATLAS和OpenBLAS/GotoBLAS,它们相互冲突。看看这个:

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

并检查它们是否都对应于相同的包(例如,它们都指向
/usr/lib/atlas base/

尝试检查LD\u LIBRARY\u路径。您可能会指向该库的另一个版本,该版本不支持numpy调用所需的符号。我的Mac电脑上也有同样的情况

但是要小心,问题可能无法直接看到,因为一个库可以使用LD_library_路径链接到下一个库

您可以检查以下命令在设置和不设置LD_LIBRARY_路径时是否存在差异(要为活动shell临时删除:unset LD_LIBRARY_路径):

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


在我的例子中,ISIS软件系统提供的库与numpy所需的板载库发生冲突。

我也遇到了同样的问题,删除libopenblas base软件包就成功了:

sudo apt-get remove libopenblas-base

正如其他人已经解释过的,有几个软件包提供了liblapack.so.3gf的不兼容版本。

当您安装了libopenblas baselibatlas3 base但未安装liblapack3时,会出现此问题。此软件包组合安装了冲突版本的libblas.so(来自OpenBLAS)和liblapack.so(来自ATLAS)

解决方案1(我的最爱):如果您还安装了liblapack3,那么您可以将OpenBLAS和ATLAS保留在您的计算机上

sudo apt-get install liblapack3
解决方案2:卸载ATLAS(由于一些deb软件包的诡计,这实际上会自动为您安装liblapack3

解决方案3:卸载OpenBLAS

sudo apt-get uninstall libopenblas-base


错误配置 解决方案2 解决方案3
您是否使用了
pip安装numpy
?还有,为什么Ubuntu的
PythonNumpy
软件包不适合您?我在作为一个用户而不是另一个用户导入numpy时出现了这个错误。这怎么可能?可能是因为你们每个人都在导入不同版本的NumPy(例如,系统范围的版本与本地编译的版本)?如果不是的话,某些人的环境中的LD_LIBRARY_路径可能会使NumPy加载不同的LAPACK。我之所以这样做是因为一个用户设置了LD_LIBRARY_路径,而另一个用户没有。是的,我们有一个软件系统提供这个库,并要求使用它自己的版本。很高兴知道你能找到它:)如果不止一个,我该怎么办/etc/alternations/libblas.so.3gf->/usr/libblas/libblas.so.3/etc/alternations/liblapack.so.3gf->/usr/lib/atlas base/atlas/liblapack.so.3gf如果我删除其中一个或另一个,是否有提供liblapack.so.3gf不兼容版本的软件包?我尝试删除libopenblas base,但apt get找不到此包。
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'