vscode不会自动识别poetry虚拟环境,必须手动通过“python: select interpreter”指定poetry env info --path输出路径并补全/bin/python(macos/linux)或\scripts\python.exe(windows),否则import报错、调试失败、类型提示失效;路径需写入.vscode/settings.json的python.defaultinterpreterpath并重启窗口生效。

VSCode 不会自动识别 Poetry 创建的虚拟环境,必须手动指定解释器路径,否则 import 报错、调试失败、类型提示失效——这不是配置问题,是路径没对齐。
poetry env info --path 输出的路径才是唯一可信来源
VSCode 从不扫描 ~/Library/Caches/pypoetry/virtualenvs/(macOS)或 %LOCALAPPDATA%\pypoetry\Cache\virtualenvs\(Windows)这些 Poetry 默认缓存目录。它只认你明确告诉它的那个 python 可执行文件。
- 在项目根目录运行
poetry env info --path,复制完整输出(例如/Users/me/Library/Caches/pypoetry/virtualenvs/myproj-abc123-py3.11) - 这个路径本身不是解释器,只是虚拟环境根目录;真实解释器是:
– macOS/Linux:<path>/bin/python</path>
– Windows:<path>\Scripts\python.exe</path> - 别用
poetry shell后终端里which python的结果——它可能被 shell alias 或 pyenv 干扰,不可靠
Python: Select Interpreter 必须选 “Enter interpreter path”
命令面板里搜 Python: Select Interpreter,列表里几乎不会出现 Poetry 环境——因为 VSCode 默认只扫描常见位置(如 .venv、venv、conda envs),不查 Poetry 缓存目录。
- 务必点 “Enter interpreter path”,然后粘贴上面拼好的完整解释器路径(含
/bin/python或\Scripts\python.exe) - 选完后看右下角状态栏:显示的必须是那个带
virtualenvs路径的python,而不是系统/usr/bin/python3或其他 venv - 如果路径输错(比如漏了
/bin/python),VSCode 会静默 fallback 到上一个解释器,且不报错——这是最常被忽略的失败点
settings.json 里硬编码路径能避免重复设置
每次切换分支、重装依赖、甚至重启 VSCode,都可能丢失解释器选择。靠记忆或手点不是办法,得固化配置。
- 在项目根目录的
.vscode/settings.json中写入:"python.defaultInterpreterPath": "/full/path/to/venv/bin/python"
(Windows 用反斜杠,路径必须和poetry env info --path输出一致) - 改完保存后,**必须关闭并重新打开整个 VSCode 窗口**(不是“Developer: Reload Window”),否则 Pylance、debugger 仍会缓存旧环境的类型信息
- 这个设置只对当前工作区生效,不会影响其他项目,安全
poetry install 成功但 VSCode 还标红 import?先盯住右下角
现象:终端里 poetry run python -c "import requests" 没问题,但编辑器里 import requests 画红线,运行也报 ModuleNotFoundError。
- 90% 是解释器没对齐:右下角显示的路径 ≠
poetry env info --path输出路径 - 检查是否误点了“Python Interpreter”面板里的系统 Python 或旧 Poetry 环境(名字相似容易选错)
- 不要在终端里
poetry shell后就以为 VSCode 会继承——它的 Python 扩展完全不读取终端的PYTHONPATH或激活状态 - 验证方式:在 Python 文件里写
import sys; print(sys.executable),运行它,输出必须和右下角路径一致
Poetry 环境路径天生动态(哈希命名),每次 poetry env use 或 poetry install 都可能生成新路径。最稳的做法不是记路径,而是养成习惯:每次环境变更后,第一件事就是重跑 poetry env info --path,再核对 VSCode 右下角。











