问题发生
错误的发生是在我安装了Tensorflow2.0.0版本后,在Anaconda创建的虚拟环境中使用conda install pandas安装了pandas,在运行程序时,发生了如下的错误:
ImportError: DLL load failed: 找不到指定的模块。
ImportError: numpy.core.multiarray failed to import
查阅了许多博客,并研究了很久发现,错误发生的原因是:在用conda安装Tensorflow后,会自动安装与之相兼容的numpy,这时候使用Tensorflow运行程序是没有问题的,但是在用conda安装pandas等与numpy存在关联的第三方库后,也会默认安装另一个版本的numpy,这时候虚拟环境中就存在了两个版本的numpy,再运行程序,就会发生如上所示的错误。
用我的电脑举例,在安装Tensorflow2.0.0后,conda提示默认的numpy版本是1.19.0
在环境中安装了pandas后,conda提示会默认安装numpy1.13.1的版本
很明显这个时候两个numpy的版本发生了冲突
错误解决
解决的办法也很简单粗暴
1.首先记得Tensorflow对应的numpy版本,用我的情况举例,版本号是1.19.0
2.使用conda uninstall numpy卸载两个版本的numpy,记得该命令需要执行两次
可以看到,第一次执行该命令时,卸载的是1.19.0的版本
使用pip show numpy命令查看numpy时,还存在1.13.0的版本
继续卸载
这时候Anaconda虚拟环境中已经不存在numpy了
3.安装第一步版本的numpy
这时候再导入Tensorflow和pandas,并执行相关的程序时,就不会报错了。
总结
1.在使用conda安装第三方库时,会自动安装相关依赖库,这时候可能会与已有的环境包冲突,在安装时需要注意。
2.在执行命令中可以指定第三方库的版本,安装与1.19.0的numpy对应的pandas,问题可能也可以解决,但是我没有尝试过,不清楚会不会导致环境中存在两个相同版本的numpy。
3.在卸载numpy1.13.0后,恰好在我的环境中,pandas也可以和1.19.0的numpy兼容。但是在不同环境,执行上述的操作后,也有可能发生pandas与numpy不兼容的情况,这时候就需要去改变Tensorflow或者pandas的版本了。