VS Code 配置 Python 解释器后终端仍显示旧版本问题排查
一、问题描述
最近在使用 VS Code 复现代码时,虽然配置好了环境,但在终端中运行时报错 no module named torchvision。然而使用 conda list 命令明明显示有 torchvision,且直接输入 import torchvision 也没有报错。
在 VS Code 的终端中输入 python --version,发现显示的竟然是 Python 3.5,而不是所激活环境中的 Python 3.8。
如图所示,在 VS Code 右下角中选择了我新建的虚拟环境 python38: (图:VS Code 右下角环境选择界面)
然后在 VS Code 终端中激活了 python38,输入 python --version,结果显示为 Python 3.5:
(图:VS Code 终端版本显示)
然而在 Anaconda Prompt 中输入 python --version 时,显示的却是 Python 3.8:
(图:Anaconda Prompt 版本显示)
这是为什么呢?Python 3.5 并不是 base 环境依赖的解释器,而是一个名为 caffe_3.5 的虚拟环境中的解释器。这里首先将所有其他的虚拟环境均删除了,只留下了 base 环境和新建的 python38 环境,然后发现 VS Code 所使用的解释器又变为了 base 环境依赖的 Python 3.7,依然不是所选环境的 Python 3.8。
二、解决方案
1. 打开 VS Code 设置
(1)快捷键:点击 Ctrl + ,
(2)在搜索框中输入 terminal.integrated.profiles.windows
(3)点击 在 settings.json 中编辑
2. 修改配置文件
打开之后发现代码中有这样一行:
"python.defaultInterpreterPath": "C:\\Users\\<用户名>\\Anaconda3\\envs\\caffe_3.5\\python.exe"
这会不会是一开始 Python 解释器选择 Python 3.5 的原因呢?
接着往下看,settings.json 的默认格式如图: (图:settings.json 默认格式)
按照通常建议,如果安装过 Anaconda 是有'Command Prompt'参数的。接下来找到 Anaconda Prompt,右键选择属性,将目标里的参数复制下来,将对应的部分放进'Command Prompt'的'args'里即可。尝试后仍然不行。
3. 其他方法
发现在 cmd 终端中可以正常激活 python38,在 anaconda prompt 中也可以激活,只有在 VS Code 终端中不能正常激活。
然后按照下面的步骤操作了一遍:
(1)在 VS Code terminal powershell 中执行 conda init 后重启 VS Code。
(2)打开电脑 Windows 的开始界面,然后直接搜索关键字 powershell,打开第一个 Windows PowerShell: (图:Windows PowerShell 启动界面)
以管理员身份运行打开,输入以下命令:
set-ExecutionPolicy RemoteSigned
然后中途会让输入 y,回车确定执行命令: (图:PowerShell 执行策略设置)
然后在 VS Code 中间试了一下,还是无法激活。
(3)再重启一下 VS Code,点击'删除'按钮,删除当前这个 powershell: (图:删除终端配置文件)
然后在上方工具栏中点击'终端'—>点击'新建终端',重新再新建一个 VS Code terminal powershell: (图:新建终端)
这回重新打开终端好像直接就是 Anaconda Prompt 了。具体不知道是哪一步起了作用,总之好像就是没问题了。
然后重新测试了 test.py 文件,错误变成了 。异常的是之前还没这个问题的。经多次尝试,再次点击运行后没有报错了。

