【python】ImportError: DLL load failed: 找不到指定的模块

时间:2024-11-20 07:24:56

原来跑过的程序突然报一堆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、重装重装再重装