我的代码在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
我不明白这个错误是什么意思,我应该怎么做。
答案 0 :(得分:4)
可以尝试这个
sudo update-alternatives --set liblapack.so.3gf /usr/lib/lapack/liblapack.so.3gf
答案 1 :(得分:3)
这是我对发生的事情的猜测:
您在运行Ubuntu 12.04时安装的scikit-learn
版本是针对liblapack.so.3gf
提供的旧版LAPACK构建的。
当你(大概)将Ubuntu从12.04升级到你现在使用的任何版本时,LAPACK也升级到了更新的版本。在Ubuntu> = 13.04的版本中,python-numpy
包的LAPACK依赖项由liblapack3
,liblapack.so.3
或libatlas3-base
提供,而不是liblapack.so.3gf
。
现在scikit-learn
尝试在运行时链接到较新版本,但由于旧版和新版LAPACK之间不兼容而失败。
我建议您先尝试使用pip卸载并重新安装scikit-learn
。希望scikit-learn
然后将针对新的LAPACK库进行重建,从那时起一切都应该正常工作。
如果这不起作用,我会尝试卸载任何当前安装的LAPACK库。这可能会迫使您同时卸载numpy
和scipy
。然后我会安装liblapack3
,以及libopenblas-base
和libopenblas-dev
(提供标准BLAS库的更快替代方案),然后重新安装numpy
,scipy
和scikit-learn
。
答案 2 :(得分:0)
仅安装liblapack3
就可以解决我的问题:
apt-get install liblapack3