原来跑过的程序突然报一堆ImportError,好像都是重新安装keras包开始的
方法一:创建python版本统一的虚拟环境
有人说是因为python版本与tensorflow版本不一致造成的,我的环境确实是tensorflow版本是3.5,python版本是3.6
所以我创建了一个虚拟环境,其中python版本是3.5
将pycharm中File>Settings>Project Interpreter中的环境也改成3.5的,但是依旧有问题,不过这次报的错是找不到keras
然后尝试在此虚拟环境pip,结果报此包已经安装过,能在/lib/site-packages中找到。卸载之后重新安装仍然找不到:
但Anaconda的环境里找不到这个包,官方安装也会报“Multiple Errors on install ”。(现在我也不明白为什么会找不到。。spyder和pycharm里面也看不到这个包,明明Activate虚拟环境之后conda list可以找到这个包)
这有个参考文档Conda reports that a package is installed, but it appears not to be,
里面提供了很多解决,暂时还没全部尝试过。
此方法无果
方法二:重新安装所有相关的包
还有人说是因为包与包之间版本不兼容的问题,我conda list的结果是:
确实只有keras相关的包安装channel不一致,我决定采用lzhalan2016 的方法把相关的包都卸载(Pip uninstall),然后用.whl安装。
直接下载.whl文件,window的下载地址:/~gohlke/pythonlibs/
然后在shell中:pip install
keras相关的包有:ipykernel、scipy、numpy、pyYAML、six、keras
此时为了避免第一个问题,这些包我都安装在虚拟环境中了。另外,在找资料的过程中,发现好像大家反映比较多的都是numpy的问题比较大,大家可以直接试试重新安装numpy。
后来发现为什么不直接base环境下一个3.6的Tensorflow呢。。真是有点蠢呀。。_(:з」∠)_
但是仍然报错:“tensorflow-1.7.0-cp36-cp36m-win_amd64.whl is not a supported wheel on this platform.“π__π
看来.whl文件走不通了。。因为之前的channel问题,我决定不用镜像直接pip install,让它慢悠悠地安装吧。。(如果还不行我就只能重装anaconda了(╥╯^╰╥))
下到77%时又又又报错:”THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes. Otherwise, examine the package contents carefully; someone may have tampered with them.“
有人说是因为网速不好,重新试几遍。
有人说与Why does pip fail with bad md5 hash for package?一样,确实是THE REQUIREMENTS FILE没有更新,可以用以下解决:
sudo pip install --no-cache-dir flask我两种都试试吧,总比重装anaconda好
成功!!
结论
由于我大部分相关的都重新安装了一遍,不太能确定这次是因为什么,但总之大体可以按照以下步骤排查:
1、检查环境变量
2、检查python、tensorflow及各安装包版本
3、检查channel
4、重装重装再重装