vscode必须手动指定poetry虚拟环境的完整python解释器路径(如/path/to/venv/bin/python或\scripts\python.exe),否则import报错、调试失败、类型提示失效;需运行poetry env info --path获取根路径后拼全解释器,通过“python: select interpreter→enter interpreter path”输入,并在.vscode/settings.json中固化配置且重启整个窗口生效。

VSCode 不会自动识别 Poetry 虚拟环境,必须手动指定 python 可执行文件路径,否则 import 报错、调试失败、Pylance 类型提示全失效——这不是插件问题,是路径根本没对齐。
poetry env info --path 输出的路径不是解释器,只是起点
很多人复制 poetry env info --path 的输出(比如 /Users/me/Library/Caches/pypoetry/virtualenvs/myproj-abc123-py3.11)就直接粘贴进 VSCode,结果无效。这个路径只是虚拟环境根目录,不是 Python 解释器本身。
- macOS/Linux 下真实解释器是:
<path>/bin/python</path> - Windows 下真实解释器是:
<path>\Scripts\python.exe</path> - 别信
which python或poetry shell后终端里显示的路径——它可能被pyenv、shell alias 或旧PATH干扰 -
poetry env info --path必须在项目根目录下运行,否则返回的是其他项目的环境路径
Python: Select Interpreter 必须选 “Enter interpreter path”
VSCode 默认扫描范围不包括 Poetry 的缓存目录(~/Library/Caches/pypoetry/virtualenvs/ 或 %LOCALAPPDATA%\pypoetry\Cache\virtualenvs\),所以列表里几乎不会出现 Poetry 环境。
- 按
Ctrl+Shift+P(macOS 是Cmd+Shift+P),输入并选择Python: Select Interpreter - 不要从下拉列表里“猜”,务必点击
Enter interpreter path - 粘贴拼好的完整路径,例如:
/Users/me/Library/Caches/pypoetry/virtualenvs/myproj-abc123-py3.11/bin/python - 输错路径(比如漏了
/bin/python)时,VSCode 会静默 fallback 到上一个解释器,且不报错——这是最常被忽略的失败点
.vscode/settings.json 里硬编码路径才能真正固化配置
每次切换 Git 分支、重装依赖、甚至重启 VSCode,都可能丢失解释器选择。靠手点或记忆不可靠,必须写死配置。
- 在项目根目录创建或编辑
.vscode/settings.json - 加入这一行(注意 Windows 用双反斜杠或正斜杠,路径必须和
poetry env info --path输出完全一致):"python.defaultInterpreterPath": "/full/path/to/venv/bin/python"
- 保存后,**必须关闭并重新打开整个 VSCode 窗口**(不是 “Developer: Reload Window”),否则 Pylance 和 debugger 仍缓存旧环境的类型信息
- 该设置只对当前工作区生效,不影响其他项目
poetry install 成功但 VSCode 仍标红 import?先看右下角状态栏
错误现象:终端里 poetry run python -c "import requests" 没问题,但 VSCode 编辑器里 import requests 标红,运行时报 ModuleNotFoundError。
- 根本原因几乎总是:VSCode 当前选中的解释器 ≠ Poetry 创建的环境 —— 可能是系统 Python、旧 venv,或另一个 Poetry 环境
- 第一反应不是重装包,而是点 VSCode 右下角状态栏的 Python 版本标识,确认显示的路径是否和
poetry env info --path拼出的解释器路径完全一致 - 如果路径对了还标红,检查
poetry install是否真的在当前项目下执行(不是父目录或子模块);再检查pyproject.toml里是否漏写了requests在[tool.poetry.dependencies]下
Poetry 环境路径藏得深、VSCode 不主动扫描、解释器绑定又不持久——这三个事实叠加,才是多数人卡住的真正原因。别绕开 poetry env info --path 这一步,也别跳过重启窗口这一步,它们不是可选动作,是必经路径。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











