使用scipy / sklearn的ImportError:`/usr/lib/liblapack.so.3gf:未定义的符号:ATL_chemv`

时间:2014-03-09 19:44:16

标签: python numpy scipy scikit-learn lapack

我的代码在Ubuntu 12.04中运行良好,但现在我有错误:

  from sklearn.metrics import accuracy_score   File "/usr/local/lib/python2.7/dist-packages/sklearn/metrics/__init__.py", line 6, in 
    from .metrics import (accuracy_score,   File "/usr/local/lib/python2.7/dist-packages/sklearn/metrics/metrics.py", line 25, in 
    from scipy.spatial.distance import hamming as sp_hamming   File "/usr/local/lib/python2.7/dist-packages/scipy/spatial/__init__.py", line 91, in 
    from .qhull import *  ImportError: /usr/lib/liblapack.so.3gf: undefined symbol: ATL_chemv

我不明白这个错误是什么意思,我应该怎么做。

3 个答案:

答案 0 :(得分:4)

可以尝试这个

sudo update-alternatives --set liblapack.so.3gf /usr/lib/lapack/liblapack.so.3gf

答案 1 :(得分:3)

这是我对发生的事情的猜测:

  1. 您在运行Ubuntu 12.04时安装的scikit-learn版本是针对liblapack.so.3gf提供的旧版LAPACK构建的。

  2. 当你(大概)将Ubuntu从12.04升级到你现在使用的任何版本时,LAPACK也升级到了更新的版本。在Ubuntu> = 13.04的版本中,python-numpy包的LAPACK依赖项由liblapack3liblapack.so.3libatlas3-base提供,而不是liblapack.so.3gf

  3. 现在scikit-learn尝试在运行时链接到较新版本,但由于旧版和新版LAPACK之间不兼容而失败。

  4. 我建议您先尝试使用pip卸载并重新安装scikit-learn。希望scikit-learn然后将针对新的LAPACK库进行重建,从那时起一切都应该正常工作。

    如果这不起作用,我会尝试卸载任何当前安装的LAPACK库。这可能会迫使您同时卸载numpyscipy。然后我会安装liblapack3,以及libopenblas-baselibopenblas-dev(提供标准BLAS库的更快替代方案),然后重新安装numpyscipyscikit-learn

答案 2 :(得分:0)

仅安装liblapack3就可以解决我的问题:

apt-get install liblapack3