只装 ms-python.python 插件即可,因其已整合 linting、debugging、jupyter 等全部功能;装其他 python 插件易引发冲突,导致断点失效、importerror 或补全消失。

只装 ms-python.python 这一个插件就够了,其他 Python 相关插件大概率会引发冲突,导致断点失效、ImportError 或补全消失。
为什么不能装一堆 Python 插件
微软在 2025 年已将 linting、debugging、Jupyter、test discovery 等能力全部整合进官方 ms-python.python 插件。所谓“Python 扩展包”(如 python-extension-pack)或单独安装的 pylintautopep8venv 等插件,要么功能重复,要么与主插件注册机制冲突——典型表现是:调试时跳过断点、import 正常但运行时报找不到模块、状态栏 Python 版本号点击无反应。
实操建议:
- 卸载所有非
ms-python.python的 Python 类插件(包括带 “Python” 字样的第三方 formatter、linter、env 管理器) - 重启 VS Code,确认左下角状态栏显示类似
Python 3.14.0的版本号;点它能弹出解释器列表才算激活成功 - 若仍不识别,按
Ctrl+Shift+P手动执行Python: Select Interpreter,粘贴where python(Windows)或which python(macOS/Linux)输出的完整路径
settings.json 必配的三项硬性配置
GUI 设置界面容易漏项,尤其在多工作区或远程开发中。以下三项必须写进用户或工作区的 settings.json,否则格式化、类型检查、导入整理等关键功能不会生效:
-
"python.languageServer": "Pylance"—— 强制启用 Pylance,禁用老旧的 Jedi(后者在大型项目中响应慢、类型推导不准) -
"editor.formatOnSave": true—— 仅开启此开关还不够,必须配合下一条才能真正调用 Black -
"python.formatting.provider": "black"—— 不设此项,VS Code 默认用内置 formatter,和black风格不一致,保存后反而“越整越乱”
额外提醒:"python.sortImports.args": ["--profile", "black"] 和 "editor.codeActionsOnSave": {"source.organizeImports": true} 这两项建议一并加上,否则 import 语句不会自动按 Black 规范排序。
虚拟环境路径别填错:必须指向 python.exe,不是目录
常见错误是把虚拟环境路径设成 C:\myproj\.venv\Scripts(Windows)或 /myproj/.venv/bin(macOS/Linux),结果调试失败、pip 命令不可用、终端里 python --version 显示系统默认版本。
正确做法是填可执行文件路径:
- venv(Windows):
C:\myproj\.venv\Scripts\python.exe - venv(macOS/Linux):
/myproj/.venv/bin/python - conda:
/Users/you/miniconda3/envs/myenv/bin/python(macOS/Linux)或对应 Windows 路径
验证方式:在 VS Code 内置终端运行 python -c "import sys; print(sys.executable)",输出路径应与你在 Select Interpreter 中选中的完全一致。
Pylance 类型检查开到什么级别合适
"python.analysis.typeCheckingMode": "basic" 是多数项目的平衡点。它启用基础类型提示检查(比如函数参数类型不匹配、变量未定义),但不过度报错干扰开发节奏。
更激进的选项如 "off"(关闭)或 "strict"(严格)都不推荐:
-
"off":失去所有类型提示价值,str当成int用也不会警告 -
"strict":对未标注类型的方法、动态属性(如getattr)、__getattr__等频繁误报,需要大量# type: ignore注释,维护成本陡增
如果项目已全面标注类型(typing、pydantic、dataclass),再考虑升级为 "basic" → "standard",但务必先跑一遍 mypy 确认无大量兼容问题。
最容易被忽略的一点:Pylance 的类型检查只对当前打开的文件及其直接依赖生效;跨工作区、未在 sys.path 中的包、或通过 importlib.import_module 动态加载的模块,即使路径正确,也大概率不被分析——这不是配置问题,是语言服务器的设计限制。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











