VS Code 配 Python 开发需装微软官方 ms-python.python 插件、设 Pylance 为语言服务器、用 module 模式配置 launch.json、选对虚拟环境解释器,并配置 black 格式化和终端 shell 初始化。

VS Code 本身不是 Python IDE,但装对插件、配好设置,它比很多专用 IDE 更轻快、更可控。关键不在“装多少”,而在“哪些非装不可”。
必须安装的 Python 插件:ms-python.python
这是微软官方维护的核心插件,提供语法高亮、智能补全(基于 Jedi + Pylance)、调试支持、测试框架集成(pytest/unittest)和 python.defaultInterpreterPath 配置能力。别用第三方“Python Support”之类替代——它们大多已过时或功能残缺。
注意点:
- 安装后务必重启 VS Code,否则
Ctrl+Shift+P→Python: Select Interpreter可能不生效 - 若项目用虚拟环境,选中
./venv/bin/python(macOS/Linux)或.\venv\Scripts\python.exe(Windows),而非系统 Python - 禁用自带的
python.languageServer(旧版 Jedi),改用Pylance(需单独安装同名插件),补全速度和类型推断准确率明显提升
调试时 launch.json 总报错?从这三处检查
VS Code 调试依赖 .vscode/launch.json,常见错误如 No module named 'xxx' 或断点不命中,往往不是代码问题,而是配置路径没对齐。
立即学习“Python免费学习笔记(深入)”;
典型正确配置(以运行 main.py 为例):
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"module": "myproject.main", // ← 推荐用 module 模式,避免 cwd 问题
"console": "integratedTerminal",
"justMyCode": true,
"env": {"PYTHONPATH": "${workspaceFolder}"}
}
]
}
关键项说明:
-
module比program更可靠,尤其涉及包内导入时 -
env.PYTHONPATH确保模块搜索路径包含工作区根目录 - 删掉
cwd字段——除非你明确需要切换到某子目录下运行
格式化用 black 还是 autopep8?直接选 black
black 是目前最无争议的 Python 格式化工具:不提供选项、不引发争论、与 PEP 8 高度一致,且和 VS Code 集成极简。
配置步骤:
- 终端执行:
pip install black - 在 VS Code 设置中搜
python.formatting.provider,设为black - 勾选
editor.formatOnSave(全局或仅 Python 文件)
注意:black 不处理 import 排序——如需此功能,额外装 isort 并配置 python.sortImports.args,但多数小项目真不需要。
终端里 python 命令正常,VS Code 集成终端却报错?检查 shell 初始化
VS Code 集成终端默认不加载你的 shell 配置(如 ~/.zshrc),导致 conda activate 或 pyenv 切换失效,表现为 ModuleNotFoundError 或找不到命令。
解决方法(以 macOS/Linux zsh 为例):
- 打开 VS Code 设置,搜
terminal.integrated.profiles - 编辑
settings.json,添加:
"terminal.integrated.profiles.zsh": {
"path": "zsh",
"args": ["-i", "-l"]
}
-i -l 强制加载交互式登录 shell,读取 ~/.zshrc,从而激活 conda/pyenv 环境。
Windows 用户若用 PowerShell,对应加 -ExecutionPolicy Bypass -NoExit;用 CMD 则基本无解——建议换用 Windows Terminal + WSL。
插件再多,也抵不过一次正确的解释器选择和一份干净的 launch.json。很多人卡在调试失败,其实只是 module 写成了 program,或者忘了点一下那个“Select Interpreter”按钮。










