VSCode通过WSL无法识别Poetry创建的Python解释器
解决VSCode+WSL中Poetry虚拟环境解释器不显示的问题
我之前也碰到过一模一样的情况,Poetry在WSL里创建的虚拟环境VSCode死活检测不到,手动输入路径还踩过坑,给你几个亲测有效的解决办法:
方法一:正确手动添加解释器路径
有时候手动输入路径失败是因为操作步骤不对,按下面的流程来:
- 打开VSCode的命令面板(按下
Ctrl+Shift+P,Mac用户按Cmd+Shift+P) - 在面板里输入
Python: Select Interpreter并选中这个选项 - 接着选择
Enter interpreter path... - 直接粘贴你通过
which python得到的完整路径:/home/kwint/.cache/pypoetry/virtualenvs/metal-hub-python-py3.7/bin/python,注意别漏了最后的python可执行文件 - 回车确认后,VSCode应该就能识别到这个虚拟环境的解释器了
方法二:让Poetry把虚拟环境放在项目根目录(更省心)
Poetry默认会把虚拟环境存在用户缓存目录,VSCode有时候不容易自动探测到,我们可以改配置让虚拟环境直接放在项目里:
- 在WSL终端的项目根目录下执行命令:
poetry config virtualenvs.in-project true - 然后重新创建虚拟环境(如果之前的环境可以弃用就先删掉,或者直接执行安装命令重建):
poetry install
这样虚拟环境会生成在项目根目录的.venv文件夹里,VSCode几乎会立刻自动检测到这个解释器,不用手动配置。
方法三:检查VSCode扩展和WSL连接状态
- 确保你的VSCode里的Python扩展是最新版本,旧版本对WSL虚拟环境的支持可能不完善
- 确认你是在WSL终端里输入
code .打开的VSCode窗口,而非Windows端VSCode远程连接WSL(两种方式都能工作,但直接在WSL里打开的窗口对本地环境识别更直接)
如果还是不行,可以手动修改VSCode的设置文件:
- 打开项目的
.vscode/settings.json(没有的话就新建一个) - 添加或修改以下配置:
{ "python.defaultInterpreterPath": "/home/kwint/.cache/pypoetry/virtualenvs/metal-hub-python-py3.7/bin/python" }
保存后重启VSCode,应该就能生效了。
内容的提问来源于stack exchange,提问作者Quint van Dijk




