升级到sklearn 0.15后出现导入错误
我在使用64位的Ubuntu 13.10和Python 2.7.5,之前一直在用sklearn 0.14。后来我通过以下方式升级到了0.15:
pip install --upgrade scikit-learn
结果我遇到了以下问题:
from sklearn import svm
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "sklearn/svm/__init__.py", line 13, in <module>
from .classes import SVC, NuSVC, SVR, NuSVR, OneClassSVM, LinearSVC
File "sklearn/svm/classes.py", line 1, in <module>
from .base import BaseLibLinear, BaseSVC, BaseLibSVM
File "sklearn/svm/base.py", line 9, in <module>
from . import libsvm_sparse
File "libsvm_sparse.pyx", line 5, in init sklearn.svm.libsvm_sparse (sklearn/svm/libsvm_sparse.c:6773)
File "sklearn/utils/__init__.py", line 11, in <module>
from .validation import (as_float_array, check_arrays, safe_asarray,
File "sklearn/utils/validation.py", line 17, in <module>
from .fixes import safe_copy
File "sklearn/utils/fixes.py", line 18, in <module>
from .testing import ignore_warnings
File "sklearn/utils/testing.py", line 36, in <module>
from nose.tools import assert_equal
ImportError: No module named nose.tools
然后,如果我再试一次 -
from sklearn import svm
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "sklearn/svm/__init__.py", line 13, in <module>
from .classes import SVC, NuSVC, SVR, NuSVR, OneClassSVM, LinearSVC
File "sklearn/svm/classes.py", line 1, in <module>
from .base import BaseLibLinear, BaseSVC, BaseLibSVM
File "sklearn/svm/base.py", line 8, in <module>
from . import libsvm, liblinear
ImportError: cannot import name libsvm
导入sklearn本身没有出现导入错误。
其他人对类似问题的回答建议卸载再重新安装,这对他们有帮助,但对我没用。
编辑:在卸载和重新安装了好几次之后,包括卸载和重新安装scikit-image,问题似乎解决了,或者至少有所改变。我现在得到的是:
from sklearn import svm
/usr/local/lib/python2.7/dist-packages/scipy/stats/_continuous_distns.py:24: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility
from . import vonmises_cython
/usr/local/lib/python2.7/dist-packages/scipy/stats/stats.py:188: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility
from ._rank import rankdata, tiecorrect
/usr/local/lib/python2.7/dist-packages/scipy/interpolate/interpolate.py:28: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility
from . import _ppoly
/usr/local/lib/python2.7/dist-packages/scipy/spatial/__init__.py:90: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility
from .ckdtree import *
/usr/local/lib/python2.7/dist-packages/scipy/spatial/__init__.py:91: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility
from .qhull import *
(我使用的是numpy 1.8.1)
不过,除了警告之外,其他的看起来都正常。我不知道问题是什么,也不知道是什么解决了它。也许是先安装sklearn,再安装skimage……
编辑2:问题通过完全卸载scipy和numpy解决了(包括手动从/usr/local/lib/python2.7/dist-packages/和/usr/share/pyshared/中删除它们)。
1 个回答
1
看起来在安装scikitlearn的时候,依赖的包出了点问题(虽然之前我也没遇到过这个情况)。我通过运行
pip install nose
安装了nose,这样错误就消失了。希望这对你有帮助。