Ubuntu下Anaconda与VirtualEnv中TensorFlow多版本异常问题排查
问题分析与解决步骤
你遇到的核心问题是:Anaconda的默认base环境中本身就预装了TensorFlow 1.1.0,你之前删除的只是单独创建的tensorflow环境,并没有清理base环境里的包。而系统默认调用的是Anaconda的Python解释器(除非激活VirtualEnv),所以不管有没有激活虚拟环境,只要用的是Anaconda的Python,就会加载base环境里的旧版本TensorFlow。
下面是具体的排查和解决步骤:
第一步:确认当前Python环境与TensorFlow的来源
先在未激活任何虚拟环境的命令行中,运行以下命令定位问题:
- 查看当前默认Python的路径:
输出应该指向Anaconda的安装目录,比如which python/home/你的用户名/anaconda3/bin/python - 查看TensorFlow的安装位置:打开Python交互模式,输入:
输出会显示TensorFlow在Anaconda base环境的site-packages目录下,比如import tensorflow as tf print(tf.__file__)/home/你的用户名/anaconda3/lib/python3.x/site-packages/tensorflow/__init__.py
第二步:卸载Anaconda base环境中的TensorFlow 1.1.0
直接用conda命令卸载base环境里的旧版本:
conda uninstall tensorflow -n base
如果conda卸载失败,也可以使用Anaconda自带的pip(注意是Anaconda路径下的pip,不是系统pip):
/home/你的用户名/anaconda3/bin/pip uninstall tensorflow
把路径替换成你第一步查到的Anaconda Python路径,将末尾的python换成pip即可。
第三步:验证清理效果
再次打开Python交互模式,输入import tensorflow as tf,如果提示ModuleNotFoundError,说明base环境里的旧版本已经被卸载。此时只有激活VirtualEnv后,才能导入1.5.0版本的TensorFlow:
source /你的虚拟环境路径/bin/activate python -c "import tensorflow as tf; print(tf.__version__)"
输出应该是1.5.0。
额外:如何默认使用VirtualEnv的TensorFlow(可选)
如果你希望系统默认调用VirtualEnv里的TensorFlow,有两种方式:
- 每次使用前手动激活虚拟环境:
source /你的虚拟环境路径/bin/activate,再运行Python或Jupyter - 修改全局环境变量,将VirtualEnv的Python路径放到
PATH最前面:编辑~/.bashrc文件,添加一行:
保存后运行export PATH="/你的虚拟环境路径/bin:$PATH"source ~/.bashrc生效。不过这会改变全局默认Python的调用,需要谨慎操作。
内容的提问来源于stack exchange,提问作者Glrs
相关产品推荐
相关产品推荐

