Win10+Python3.6+Anaconda环境下TensorFlow版本不一致问题咨询
嘿,这问题我之前帮好几个朋友排查过,核心原因就是Anaconda的环境隔离机制在“搞事情”——你在Anaconda Prompt里安装新版TensorFlow的环境,和Jupyter Notebook、Anaconda Navigator当前显示的环境根本不是同一个!
Anaconda的每个环境都是完全独立的“小世界”,不同环境里的包版本互不影响。你大概率是在某个环境(比如自己新建的tf_env)里装了1.6.0,但Jupyter和Navigator默认加载的是另一个环境(比如初始的base环境),而那个环境里装的还是老版1.2.1,所以就出现了“安装成功但显示旧版”的矛盾。
1. 先搞清楚你把新版TensorFlow装到哪个环境里了
打开Anaconda Prompt,输入这条命令看看所有已创建的环境:
conda info --envs
输出会像这样,带*的是当前激活的环境:
base * C:\Users\你的用户名\Anaconda3 tf_env C:\Users\你的用户名\Anaconda3\envs\tf_env
回忆一下你安装TensorFlow时,是不是先激活了某个环境(比如tf_env)?如果安装时没激活任何环境,那就是装在了base环境,但Jupyter和Navigator可能用的是别的环境。
2. 验证目标环境的TensorFlow版本
激活你安装新版的那个环境(比如tf_env):
conda activate tf_env
然后输入这条命令确认版本:
python -c "import tensorflow as tf; print(tf.__version__)"
如果显示1.6.0,那百分百就是环境没对应上的问题了。
3. 让Jupyter Notebook用上正确的环境
有两种简单的方法:
- 方法一:给Jupyter添加目标环境的内核
激活目标环境后,先装ipykernel(Jupyter的内核依赖):
然后把这个环境添加成Jupyter的可选内核:conda install ipykernel
之后打开Jupyter Notebook,点击右上角的“新建”,选择python -m ipykernel install --user --name tf_env --display-name "Python (tf_env)"Python (tf_env)这个内核,再运行你的代码,就能看到1.6.0的版本了。 - 方法二:直接在目标环境里启动Jupyter
激活目标环境后,直接输入:
这样打开的Jupyter会默认使用当前环境的所有包,版本自然是对的。jupyter notebook
4. 让Anaconda Navigator显示正确的环境
打开Navigator,左边点“Environments”,然后在顶部的环境下拉框里,选你装了新版TensorFlow的那个环境(比如tf_env),就能看到tensorflow-1.6.0的条目了。
以后装包前一定要先确认当前激活的环境是哪个!Anaconda的环境隔离虽然好用,但没注意环境的话很容易踩这种版本不一致的坑。如果懒得切换环境,也可以直接在安装时指定环境:
conda install -n tf_env tensorflow==1.6.0
内容的提问来源于stack exchange,提问作者Metin Güney

