Pylance必须显式配置为语言服务器并搭配Black格式化才能实现完整Python开发支持:需设"python.languageServer":"Pylance"、"python.formatting.provider":"black"、"editor.formatOnSave":true及"editor.codeActionsOnSave":{"source.organizeImports":true},同时通过"python.analysis.extraPaths"解决跨目录导入报红问题。

python.formatting.provider 必须设为 black,否则自动格式化会失效——这是多数人配置失败的第一步。
Python 官方插件 + Pylance 是语言支持的底线
只装 ms-python.python 不够,它默认用旧版语言服务器,类型提示弱、跳转卡顿、typing 支持不全。必须搭配 Pylance(由 Microsoft 维护),并在 settings.json 中显式指定:
"python.languageServer": "Pylance"-
"python.analysis.typeCheckingMode": "basic"(或"off"用于大型旧项目) -
"python.analysis.extraPaths": ["./src", "./tests"](解决跨目录 import 无法识别问题)
常见错误现象:from mypackage import module 报红,但运行正常——大概率是 extraPaths 没配,或路径写成 "src/"(末尾斜杠会导致识别失败)。
保存即格式化:black + isort + auto-save 的真实链路
光开 editor.formatOnSave 不行,它只触发格式化,不整理 import。真正起效的是三者协同:
"python.formatting.provider": "black""editor.codeActionsOnSave": {"source.organizeImports": true}"editor.formatOnSave": true
注意:isort 插件本身不参与自动触发,它靠 VSCode 内置的 source.organizeImports 动作调用;若该动作没生效,检查是否禁用了 Python 插件的代码操作(python.editor.codeActions 默认开启,一般不用动)。
立即学习“Python免费学习笔记(深入)”;
性能影响:单文件 black 在做 AST 解析,忍一忍。
图片提示词生成器?不止如此。 马甲系统 —— 把脑海中的画面,翻译成AI能理解的专业表达。 用得越多,它越懂你:首次需要多问几句确认方向,用久了几乎一说就懂。 用得越多,它越快:缓存机制让后续对话越来越省。 RAG进化:成功案例持续入库,越跑越聪明。 输入「新手指南」查看完整功能介绍
调试配置别硬背 launch.json,用命令面板更快
手写 launch.json 容易漏掉 "console": "integratedTerminal",导致输出看不见。更稳的方式是:
- 打开任意
.py文件 -
Ctrl+Shift+P→ 输入Python: Configure a debug configuration - 选
Python File,VSCode 自动生成带注释的配置
关键点:"program": "${file}" 是当前文件,"module": "torch.distributed.run" 这类模块启动需单独选 Python Module 模板,不能复用文件模板。
容易踩的坑:env 字段写错格式(必须是对象,不是数组),或把 "PYTHONPATH" 值写成 ./src/(结尾斜杠会导致导入失败)。
远程开发与虚拟环境识别失效的典型原因
在 WSL 或 SSH 远程连接后,Python: Select Interpreter 找不到虚拟环境,往往不是路径问题,而是:
- 远程机器上没装
pip或venv(Ubuntu 默认不装python3-venv) -
./venv/bin/python权限不对(chmod +x ./venv/bin/python) - VSCode Remote 插件没启用,或连接后没重新加载窗口(右下角 Python 解释器状态栏仍是灰色)
验证方式:在远程终端里执行 ./venv/bin/python -c "import sys; print(sys.path)",再对比 VSCode 中解释器详情页显示的 sys.path——不一致就说明没正确加载。
python.linting.enabled 开关要和 flake8 或 pylint 插件配合使用,单独开只是报一堆“no linter selected”警告。真正省时间的,是让错误在写完括号前就标出来,而不是等运行时报 NameError。

















