一个无语的晚上。
事情是这样的,在公司电脑上写好了代码,运行没问题,回家后却在import这一步就报错,可是两边电脑明明是同一个安装包,同一种安装方式的啊……
ImportError: cannot import name 'comb'
关于这个报错,百度了下资料太少,说是“scipy.misc中的comb位置已经移到scipy.special中”,可能跟更新了什么包的版本有关,一想,今天早晨出现其他报错的时候按照教程一股脑升级了几个包,难道是升级出问题了???
根据百度到的资料,看了下目前可能有问题的两个包的版本:
import scipy; print("SciPy", scipy.__version__)
import sklearn; print("Scikit-Learn", sklearn.__version__)
显示:
SciPy 1.5.2
Scikit-Learn 0.18.2
SciPy是现在的最新版本,但Scikit-Learn不是,网上说SciPy1.2.1版本更好一点,暂时不管,先把Scikit-Learn升级到现在最新版本0.23.2:
pip install --upgrade sklearn
运行,果然没有“ImportError: cannot import name 'comb' ”了,但又出现下面的问题:ImportError: cannot import name 'logsumexp'……
原因依旧是新版本的scipy,misc 中已经移除了logsumexp,改到scipy.special中了,看来还是得降级。
百度到的一段话,scipy1.2.X的版本提及率太高了,就回滚到这个版本吧,可直接pip特别慢,还总是安装到一半就报错……
无奈之下找了这么个链接,几秒钟就安装好了:
pip install scipy==1.2.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/
重启jupyter,果然运行成功了,没有再报错!
总结:只要把scipy回滚到低版本(如1.2.1)就可以解决!这么简单的事搞了一晚上,小白的进阶之路充满了各种无语,记录一下。这次也带来了一点教训——不到万不得已,别轻易升级包,不然各种包不兼容就惨了~