问题原因和解决
- 1.报错的原因,我的理解是python环境相互覆盖了。
- 2.怎样解决
- 3.总结
这个图报错已经困扰我好几天了,看了别人很多博客,尝试了很多方法,但没什么效果,不过最终还是找到问题的所在了。
为何我如此纠结,死磕不放呢,当然不完全是因为有点小强迫症,而是因为我想偷懒,为何这样说呢,那让我们来分析下原因:
(这图,是我Anaconda安装了tensorflow后,启动jupyter所报的错,我看大部分人都是报虚拟环境tensorflow的错,而我的是反过来的。所以我很少找到有相应解决方案(头疼)。)
1.报错的原因,我的理解是python环境相互覆盖了。
我们在安装tensorflow这一步时,可能修改了Anaconda原本python环境的路径:
打开Anaconda Prompt命令框(输入)
jupyter kernelspec list
结果:
(base环境下)
(tensorflow环境下)
可以发现他们共用一个内核,我们进去该路径文件看看:
它们都共用tensorflow虚拟环境下的python,此时你改成你自己的annconda环境下的python,这个错就不会出现了,你的jupyter也回归正常了(不妨试一试)。
但你的tensorflow的环境访问路径就出现问题了,怎么说(识别不了,因为环境是不在你的tensorflow下)。
2.怎样解决
这里也说到为什么要增加内核的原因,因为你安装的tensorflow虚拟环境不包含很多库,例如matplotlib、numpy…;当你不用tensorflow框架时,但你想导其他包,一个一个安装有点麻烦。
进去tensorflow环境:
#装ipykernel
pip install ipykernel -i https://pypi.douban.com/simple
继续执行命令:
python -m ipykernel install --user --name tensorflow --display-name "Python [anaconda]"
#定义名字随你自己取
这时该路径,多了一个文件tensorflow,进去修改路径:
此时,重新启动jupyter(tensorflow),发现有两个内核可以自由切换:
tensorflow(没有matplotlib)运行报错:
切换anaconda环境运行无误:
3.总结
这种方法算是间接解决两个内核环境相互覆盖的方法吧,但是实际没有是从anaconda角度出发改变访问内核路径,而是从tensorflow环境下改变它能访问两者内核环境,你打开anaconda的jupyter可能还是会跳出出来,但是用tensorflow的jupyter是不会出错的。