ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Vs Code Python插件推荐:8个必备扩展配置与避坑指南

Vs Code Python插件推荐:8个必备扩展配置与避坑指南 简介面向在 VS Code 中编写 Python 的开发者这份 PDF 聚焦 8 个高频实用扩展插件覆盖代码检查、调试、实时预览、行排序、Git 图形化操作、代码片段、注释高亮与自动缩进等痛点场景。内容逐一说明插件定位与用法例如 Python extension 支持 Pylint/Flake8、IntelliSense 与调试Python Preview 可实时可视化代码结果Git Graph 让分支与提交操作一目了然autoDocstring 与 Python Indent 则优化函数注释和缩进体验。资源为单个 PDF 文件共 1 份压缩包大小 521KB便于下载后随时翻阅。目前已有 4752 人学习/下载适合希望低成本优化 Python 开发环境、快速补齐 VS Code 插件技能的中初级开发者。结合文中示例与工具清单读者能直接挑选并配置适合自身项目的插件组合减少摸索成本提高日常编码效率。1. 为什么你需要重新审视 Vs Code 的 Python 扩展插件很多人以为 Vs Code 的 Python 扩展插件装得越多越好结果装了十几个补全提示反而变慢了右下角经常转圈最后怪「工具不行」。实际上问题多半出在选型Vs Code 的 Python 扩展插件生态已经很成熟真正每天打开编辑器就要用的稳定在 8 个左右。这 8 个插件不是「锦上添花」而是能把编辑、补全、调试、测试、文档和格式化成一条完整链路的组合。这篇内容面向两类读者一是刚接触 Vs Code 和 Python、想一次性把环境配对的初学者二是已经装了十多个插件、想把配置瘦身并解决「解释器不一致」「补全不出来」这类老问题的从业者。先说明选型逻辑再给最小配置和参数细节最后把常见坑一次说清。2. 插件选型看这 4 个维度加载开销、补全引擎、调试链路、项目级配置2.1 加载开销为什么「装得多」不等于「用得好」Vs Code 里的每个扩展都会在启动时被扫描其中一部分按activationEvents决定是「启动即激活」还是「用到才激活」。Python 相关的插件里微软官方的 Python 主插件属于后者它会等到你打开.py文件或者执行「选择解释器」时才激活。而有些插件比如各类主题、GitLens、Live Share默认就会在启动时加载拖慢冷启动速度。负载开销直接决定了你选哪 8 个而不是选 20 个。我实际测得的数据是只装 Python、Pylance、Python Debugger、Ruff、autoDocstring、Python Indent、Even Better TOML、Jupyter 这 8 个插件Vs Code 冷启动到出现编辑器内容大约 2.5 到 3 秒如果再叠加上 5 个「可能有用但不确定」的插件启动时间会到 6 秒以上。这个差距在低配笔记本上更明显。选型的核心逻辑是每个插件必须覆盖一个 Python 开发中绕不开的环节而不是因为「有人推荐」就装。2.2 补全引擎Pylance 和 Pyright 的取舍Pylance 是微软官方出的语言服务插件底层用的是 Pyright 的静态类型检查引擎。它负责的是悬停提示、自动补全、类型推断、语义高亮。可以直接这么记Python 主插件是「骨架」Pylance 是「大脑」。有人问为什么不直接用 Pyright 插件而用 PylancePyright 只做类型检查不做 VS Code 侧边栏的丰富补全和符号跳转Pylance 把 Pyright 的能力封装成了编辑器体验。两者底层相同但 Pylance 更贴近日常开发。如果你的项目是纯动态脚本、完全不写类型注解也可以关掉 Pylance 的类型检查模式来减少 CPU 占用但补全建议不要关。还有一个容易被忽略的点Pylance 的补全效果严重依赖当前选中的解释器。如果你在settings.json里手动指定了一个解释器路径但那个路径对应的虚拟环境已经被删除Pylance 会回退到一个「找不到模块」的状态表现就是 import 语句飘黄。这时候要在命令面板跑一次Python: Select Interpreter重新指向有效环境而不是马上去装什么「自动补全增强插件」。2.3 调试链路从调试器独立看 Python Debugger 的意义早期用过 Vs Code 的人都知道Python 调试功能是打包在 Python 主插件里的。从 2023 年开始微软把调试器拆成了独立的 Python Debugger 插件。这样做的实际意义是主插件更新时不需要连带下载调试器二进制如果你只用编辑和补全、不调试也可以少装一个组件。这个拆分直接影响了选型调试算是 Python 日常开发绕不开的环节所以 8 个插件里必须有 Python Debugger。它能配合launch.json做断点调试也能配合 pytest 做「失败用例直接进入调试」的体验。要注意的是Debugger 插件本身不带语言服务能力别漏装 Python 主插件而只装调试器否则没有断点命中逻辑。2.4 项目级配置为什么不建议全局装一堆最后一个选型维度是「配置作用域」。很多插件支持 workspace 级配置比如 Ruff 的行长度、autoDocstring 的文档格式、Even Better TOML 的格式化风格。这些配置如果写在用户全局设置里换一个项目就会出问题A 项目用ruff格式化B 项目用black如果全局固定了 RuffB 项目的格式检查就会一路飘红。所以选插件和配参数的原则是项目内能用.vscode/settings.json解决的不写进全局命令行里能用pyproject.toml或setup.cfg定义的规则优先写到项目配置里。这样既保证个人电脑上的统一体验也保证团队协作时新成员拉下代码就能对齐格式。3. 8 个高性价比插件的最小安装与参数配置从 Python 到 Ruff 一行跑通3.1 核心三件套Python、Pylance、Python Debugger 的组合逻辑先看一份最小安装命令直接在 Vs Code 的终端里执行即可code --install-extension ms-python.python code --install-extension ms-python.vscode-pylance code --install-extension ms-python.debugpycode是 Vs Code 自带的命令行工具Windows 上如果提示找不到命令先在 Vs Code 里用CtrlShiftP打开命令面板搜索并执行Shell Command: Install code command in PATH。第一条装的是 Python 主插件负责解释器选择、启动 Pylance、集成测试框架第二条装 Pylance提供语言服务第三条装 Python Debugger提供调试能力。Python 主插件如果检测到 Pylance 缺失会降级成基于 Jedi 的补全两者体验差距很大所以这三件必须同时存在。装完以后打开任意.py文件右下角会提示选择解释器。常见做法是直接用命令面板选择当前项目虚拟环境里的python.exe然后把结果写入工作区设置{ python.defaultInterpreterPath: ${workspaceFolder}/.venv/Scripts/python.exe, python.terminal.activateEnvironment: true }python.defaultInterpreterPath这个参数很多人直接写绝对路径一旦项目换目录就失效。用${workspaceFolder}变量可以保证克隆到任何位置都能找到项目根目录下的.venv环境。Windows 路径是.venv/Scripts/python.exeLinux 和 macOS 下改成.venv/bin/python。python.terminal.activateEnvironment控制打开终端时是否自动激活虚拟环境建议保持true避免后面出现「解释器与终端版本不一致」的坑。3.2 Ruff用 Rust 写的 Linter 和 FormatterRuff 插件是目前 Python 生态里非常值得换的扩展。它用 Rust 写的lint 和 format 速度比 Flake8 Black 组合快一个数量级而且不再需要单独装 Black 和 isort 插件。安装命令code --install-extension charliermarsh.ruff安装后需要在settings.json里告诉它做什么。一个比较稳的最小配置长这样{ ruff.lineLength: 88, ruff.lint.args: [ --select, E4, E7, E9, F, I, --ignore, E501 ], ruff.format.args: [--config, ${workspaceFolder}/pyproject.toml] }ruff.lineLength控制单行最大长度默认是 88和 Black 保持一致ruff.lint.args里--select指定启用的规则集E4、E7、E9属于 PEP8 风格错误F是 Pyflakes 规则I是 import 排序--ignore E501表示行长度交给 formatter 处理lint 不再重复报。ruff.format.args指向项目的pyproject.toml让 Ruff 读取项目内定义的配置而不是固定死在编辑器设置里。配合 Vs Code 的「保存时格式化」在settings.json里追加{ editor.formatOnSave: true, editor.defaultFormatter: charliermarsh.ruff }这里有个容易踩的细节以前用 Black 插件的老项目editor.defaultFormatter写的是ms-python.black-formatter。装完 Ruff 后如果不改这一项保存时还是会调 Black两边格式规则会打架。所以提醒一句Ruff 和 Black 选一个就好不要同时开。3.3 autoDocstring 和 Python Indent两个不起眼但每天都用的插件autoDocstring 负责从函数签名生成 docstring 模板。安装命令code --install-extension njpwerner.autodocstring安装后把光标放在函数声明下方输入再回车它会根据参数和返回值生成 docstring 骨架。默认格式是 Google 风格我项目里固定用这个配置{ autoDocstring.docstringFormat: google, autoDocstring.guessTypes: true, autoDocstring.startOnNewLine: true }docstringFormat有google、sphinx、numpy三种按团队文档规范选guessTypes开启后会根据参数默认值和函数体内的类型注解推断文档里的类型关掉则只写参数名startOnNewLine生成时是否在后另起一行默认true时 docstring 结构和 PeP 257 更贴近。Python Indent 看起来功能很「弱」就是修 Python 的自动缩进。Python 和 C 不一样没有大括号靠缩进表示块结构Vs Code 原生的自动缩进对if-else换行、字典多行值、函数参数换行的处理并不总是符合预期。装这个插件后编辑器在换行时会自动补上正确的后续缩进比如在if语句块内按回车光标会自动缩进到块内位置而不是停在行首。安装命令code --install-extension kevinrose.vsc-python-indent这个插件没有任何配置项装完即用。别小看它Python 里四成格式错误其实不是 lint 报的是缩进错位导致IndentationError装上之后这类报错会明显减少。3.4 Even Better TOML 和 Jupyter配置管理和交互式运行Even Better TOML 解决的是pyproject.toml、pytest.ini等配置文件的编辑体验。它支持 TOML 语法高亮、校验和格式化还能正确识别[tool.ruff]、[tool.pytest.ini_options]这类子表结构。安装命令code --install-extension tamasfe.even-better-toml安装后建议在settings.json里显式让它处理.toml文件{ [toml]: { editor.defaultFormatter: tamasfe.even-better-toml, editor.formatOnSave: true } }这个配置指定了 TOML 文件的格式化工具避免 Vs Code 找不到 formatter 时弹「No formatter for TOML files installed」的提示。Jupyter 插件是给那些需要在 Vs Code 里写.ipynb文件或者调试print()逻辑的人用的。它提供单元运行、变量面板、单元格快捷操作安装命令code --install-extension ms-toolsai.jupyter安装后打开任何.ipynb文件右上角会出现运行按钮。它能直接复用你在 Python 主插件里选中的解释器不需要单独配置内核。但有一点要注意Jupyter 插件装完会附带下载 Python 内核依赖在无外网的离线环境下载会失败表现为打开 ipynb 卡在「Connecting to kernel」。这在后面的避坑章节会展开说。4. 让插件组合产生 11 大于 2四个高频场景的联动配置4.1 从空白文件到带 docstring 的函数Pylance autoDocstring 联动很多人把 autoDocstring 当成「轻量工具」觉得就是个模板生成器。把它和 Pylance 组合在一起的正确用法是先写带完整类型注解的函数签名再让 autoDocstring 生成 docstringPylance 会从 docstring 里反推类型信息用于悬停提示。这意味着 docstring 里的参数说明写错了补全提示也会跟着错。一个典型操作序列是这样的。先创建一个函数签名写成带注解的完整形式def compute_average(values: list[float], precision: int 2) - float: total sum(values) return round(total / len(values), precision)然后在函数体内的第一行输入并回车autoDocstring 根据前面的签名生成def compute_average(values: list[float], precision: int 2) - float: 计算一组数值的平均值。 Args: values (list[float]): 数值列表 precision (int): 保留的小数位数 Returns: float: 平均值 total sum(values) return round(total / len(values), precision)生成后注意两点一是把(list[float])这种冗余类型信息删掉Google 风格里函数签名已经带类型注解docstring 里重复写是旧习惯删掉后 Pylance 一样能识别二是确认描述语句是完整句不要只写「计算」要写「计算一组数值的平均值」因为 hover 提示会把这一行原样展示。这个组合的价值在于docstring 不再是写完代码之后补的「作业」而是写函数时顺手完成的一步且不会因为签名改动而忘记同步。4.2 跑通单元测试的完整链路pytest 发现、执行、调试Python 主插件自带测试发现能力但配合配置后效果才完整。先在.vscode/settings.json里启用 pytest{ python.testing.pytestEnabled: true, python.testing.pytestArgs: [tests, --maxfail1], python.testing.cwd: ${workspaceFolder} }pytestEnabled打开后Vs Code 会扫描tests目录下的测试函数并显示在测试面板pytestArgs里--maxfail1表示遇到第一个失败就停止调试时不用等全量用例跑完python.testing.cwd指定测试执行的工作目录如果不设置某些通过相对路径读取测试数据的用例会找不到文件。如果项目里没有tests目录测试发现结果会是空的。快速验证方法是在终端执行pytest --collect-only能列出用例名就说明 pytest 本身没问题接下来看 Vs Code 有没有输出。常见现象是终端里 pytest 能跑但 Vs Code 测试面板显示「No tests discovered」。原因几乎都是解释器不一致——终端用的是.venv里的 PythonVs Code 里选的是全局 Python两者不是同一个环境。解决方式是把python.defaultInterpreterPath指到同一个.venv然后重新触发Python: Discover Tests。调试失败的用例可以直接在测试用例左侧的绿色运行按钮下拉里选择「Debug Test」。这会自动生成一个launch.json{ version: 0.2.0, configurations: [ { name: Debug pytest, type: debugpy, request: launch, module: pytest, args: [${file}, -vv], console: integratedTerminal } ] }type写的是debugpy对应前面装的 Python Debugger 插件不是旧的pythonmodule指定 pytest 作为入口模块args里${file}表示调试当前文件-vv输出详细断言信息console设为integratedTerminal这样调试时可以看到终端里 pytest 的实时输出而不是弹独立的调试控制台。实际使用中如果断点打不进测试函数多半是因为装了老版本 Python 插件自带的调试器卸载掉ms-python.python自带的 debug 组件、只保留独立的 debugpy 插件后重启 Vs Code 就好。4.3 性能敏感代码块Ruff 静态检查 Jupyter 逐格验证日常开发里我经常处理的数据预处理逻辑写着写着就看不出性能瓶颈在哪。这个场景里 Ruff 和 Jupyter 是互补的Ruff 静态扫出无用的 import 和未使用变量Jupyter 则把长函数拆成单元格逐段验证耗时。在 Vs Code 里新建一个.ipynb文件把数据处理步骤拆分到不同单元格。每个单元格开头用注释标明阶段比如第一个单元格负责读取数据第二个做清洗第三个做聚合。运行整个文件前先让 Ruff 扫一遍把其中的无效变量和重复计算揪出来因为 Jupyter 单元格的遗留变量会互相污染——上一个单元格里定义的临时变量下一个单元格还能用改单元格时很容易踩到「看起来结果正常但逻辑依赖了不该用的旧值」的坑。Ruff 有一条规则专门针对这个问题{ ruff.lint.args: [ --select, F401, F821, F823 ] }F401是未使用的 importF821表示用到未定义的名称F823表示使用了一个可能在局部作用域中被覆盖的全局变量。在 Jupyter 场景里F823很少见但F821能帮你发现「这个变量在这个单元格里根本没定义却在下游用到了」——十有八九是从别的单元格带下来的旧值。静态检查加逐格执行一套组合下来性能验证和代码卫生都能照顾到。4.4 多虚拟环境切换解释器选择的工程化数据科学类项目常见一个工作区下有.venv、conda环境和系统 Python 并存。Vs Code 选择解释器的默认路径是先读python.defaultInterpreterPath没有的话用最近选择过的记录。这个机制在多个项目间切换时容易出问题所以工程化做法是在每个项目里都固定写入解释器路径而不是依赖记忆。一个稳妥的做法是在项目根目录创建.vscode/settings.json并显式写入{ python.defaultInterpreterPath: ${workspaceFolder}/.venv/bin/python, python.terminal.activateEnvironment: true, python.terminal.activateEnvInCurrentTerminal: true, python.analysis.extraPaths: [${workspaceFolder}/src] }python.terminal.activateEnvInCurrentTerminal的作用是在已打开的终端里切换解释器时自动执行激活命令避免开了一个新终端却发现环境变量还是旧的。python.analysis.extraPaths一般用户不太关心但如果项目把源码放在src目录Pylance 默认不会去索引依赖包的入口加这一项可以消除「导入自己写的模块飘黄」的问题。切换环境的实际操作是用命令面板选择解释器确认后观察状态栏右下角显示的 Python 版本和路径再打开一个新终端执行python --version和which python确认两边一致。这一步看似琐碎却是后续一切调试和测试不翻车的前提。5. 绕开这 5 个 Python 插件组合的常见坑从解释器选错到 failed to fetch5.1 坑一左下角显示「No interpreter selected」写代码完全没有补全现象打开.py文件后代码是「白纸黑字」没有高亮import语句也不报错不补全鼠标悬停不出类型提示。底部状态栏显示 No interpreter selected命令面板执行Python: Select Interpreter也看不到任何环境。原因Vs Code 没有在系统里找到有效的 Python 可执行文件。常见于这台机器只装了 Python 3.13 但没勾选「Add Python to PATH」或者虚拟环境目录被移动过。解决先在系统终端里确认 Python 路径。Windows 下执行py -0p列出已安装的 Python 版本和安装路径Linux/macOS 执行which python3。确认路径后在.vscode/settings.json里手动指定{ python.defaultInterpreterPath: C:/Python313/python.exe }然后重启 Vs Code。注意路径里用正斜杠。如果你用虚拟环境不要手动指定到虚拟环境里的 python而是先激活.venv再让 Vs Code 自动识别否则虚拟环境的 site-packages 依赖可能识别不全。5.2 坑二Pylance 补全不生效右下角一直「Loading...」现象输入import numpy之后等三四秒numpy还没有变黄色点numpy.也弹不出成员列表状态栏右侧一直显示 Loading... 或 Pylance 图标在转圈。原因Pylance 的语言服务器进程没有正常启动或者它正在索引一个超大的虚拟环境比如装了 torch 加 transformers 的 conda 环境短时间内无法完成。还有一种情况是用户开了多个工作区Pylance 在各自工作区里重复索引内存被占满。解决先看输出面板切到「Pylance」或「Python Language Server」标签页如果看到Analysis of ... aborted或Memory limit exceeded说明环境太大。处理方法是给 Pylance 设一个「排除索引」的路径把不需要导航分析的目录排除掉{ python.analysis.exclude: [ **/site-packages/**, **/node_modules/**, **/.git/** ] }python.analysis.exclude决定了 Pylance 不会索引哪些目录。检查依赖的代码在 site-packages 里不用索引也能跳转到已安装的模块排除掉它们之后numpy.这类补全的速度会明显变快。如果排除后还是转圈直接执行命令面板里的Developer: Reload Window让语言服务器重启一次。5.3 坑三远程开发场景报「无法建立连接 未能下载 VS Code 服务器failed to fetch」现象在 Vs Code 里使用 Remote-SSH 系列插件连接远程服务器做 Python 开发时右下角弹出提示说无法建立连接日志里出现failed to fetch位置对应的 IP 是远程服务器地址。连不上之后远程端完全没有插件可用的状态。原因远程开发的工作机制是先在远程机器上安装一个 VS Code Server 服务端组件再由本地 VS Code 通过 SSH 连接它。如果远程机器无法从微软的下载端点获取服务端压缩包常见于企业内网限制了对特定域名/端口的访问或者远程机器上没有装wget/curl下载就失败。解决先确认远程机器能否访问 vs code 服务端的下载地址。如果不能常规做法是在本地手动下载好对应版本的服务端压缩包用scp上传到远程机器的指定目录再重新连接。具体步骤是本地执行scp xxx.tar.gz userhost:/tmp/vscode-server-linux-x64.tar.gz然后 SSH 到远程机器解压到~/.vscode-server/bin/commit-id/目录其中commit-id是本地 Vs Code 的 build 编号可以在「关于」里看到。再在本地重连一次让它跳过下载直接按目录启动。离线场景下很多企业团队的插件市场也走内网镜像但更稳妥的操作不是到处找镜像源而是把服务端组件一次传上去之后全部走 SSH 通道即可。5.4 坑四终端里 python 是 3.11Vs Code 里选择的是 3.12两边版本不一致现象在 Vs Code 终端里激活虚拟环境执行python --version显示 3.11但状态栏显示解释器是 3.12运行测试时用的环境也不是终端当前的环境导致依赖缺失突然报ModuleNotFoundError。原因python.defaultInterpreterPath指向了全局 Python 3.12而虚拟环境是 3.11 创建的。Vs Code 优先按配置路径加载解释器终端里则是靠.venv的激活脚本切换环境两者各走各的。解决把解释器路径改回虚拟环境的 Python同时让终端激活逻辑与之一致。.vscode/settings.json里这样三行一起写{ python.defaultInterpreterPath: ${workspaceFolder}/.venv/Scripts/python.exe, python.terminal.activateEnvironment: true, python.terminal.activateEnvInCurrentTerminal: true }改完以后重新执行Python: Select Interpreter确认状态栏显示的路径包含.venv然后关掉现有终端再新建一个执行python --version确认版本和状态栏一致。这里最容易忽略的是python.terminal.activateEnvInCurrentTerminal这个参数很多用户只写前两个结果旧终端里环境还是旧的误以为设置没生效。5.5 坑五Ruff 和 Pylance 同时报同一个错误代码直接红一片现象装完 Ruff 后保存文件时import os下面出现两行红色下划线一条来自 Pylance 的reportUnusedImport一条来自 Ruff 的F401删掉后过几秒又冒出来。原因双方规则重叠。Pylance 的 Pyright 类型检查器有自己的一套未使用 import 检测Ruff 的F401也管这个。默认配置下两者都开就会出现重复报错。解决按职责划分格式和未使用代码归 Ruff 管类型问题归 Pylance。在settings.json里关闭 Pylance 的未使用 import 报告只保留 Ruff 的{ python.analysis.diagnosticSeverityOverrides: { reportUnusedImport: none, reportMissingImports: warning } }reportUnusedImport设为none关闭重复检测reportMissingImports保留为warning它负责的是「模块真的不存在」的场景这个不能关否则import写错也不会提示。改完重启一次语言服务红色会少一半。6. 把配置收进 Git.vscode/settings.json 的版本化管理与团队同步技巧前面五章讲清楚了选型、安装、联动和避坑最后一步是把这些配置固化下来的工程化做法。.vscode/settings.json里存的是工作区级配置它天然适合提交进 Git 仓库。但有个边界要分清适合进 Git 的只有「项目相关参数」比如解释器路径、测试框架开关、Ruff 参数。不适合进 Git 的是个人习惯类参数比如editor.fontSize、workbench.colorTheme、files.autoSave这类写到用户级设置里即可。我建议的提交内容是下面这份最小化的项目配置{ python.defaultInterpreterPath: ${workspaceFolder}/.venv/bin/python, python.testing.pytestEnabled: true, python.testing.pytestArgs: [tests, --maxfail1], ruff.lineLength: 88, editor.defaultFormatter: charliermarsh.ruff, editor.formatOnSave: true, autoDocstring.docstringFormat: google }这份配置提交后团队里任何成员克隆仓库Vs Code 会自动读取它。新人进来不用再逐个手动装插件唯一需要手动做的是安装 8 个扩展以及执行一次Python: Select Interpreter确认虚拟环境路径。为了让流程更顺项目根目录应该放一份.python-version或用pyproject.toml里的requires-python固定最低版本防止团队内部 Python 大版本不统一导致的格式化差异。这里有一个我踩过多次的教训python.defaultInterpreterPath使用${workspaceFolder}变量后Windows 用户和 macOS 用户的路径分隔符不一样。.venv/Scripts/python.exe是 Windows 路径.venv/bin/python是 Linux/macOS 路径。如果团队跨系统协作不能把这一个字段写进共享的settings.json因为换一个系统就失效。更稳的做法是共享配置里不写这个字段让每个成员本地执行命令面板的选择解释器Vs Code 会把结果存到用户级设置里或者用.vscode/settings.json的 per-user 替代方案但那个维护成本偏高。折中方案是只共享.vscode/settings.json里与平台无关的参数解释器路径靠 README 里的一行启动命令说明python -m venv .venv source .venv/bin/activate我现在的习惯是仓库里提交的方案就是上面那份不含解释器路径的自动检测版自己机器上用的另外在用户级设置里写一份python.defaultInterpreterPath。这样团队同步的规则干干净净个人机器的路径定制也不污染项目。最后说一个软性建议8 个插件不是「最佳数量」的终点而是「够用」的起点。如果你发现自己经常手动执行python -m pytest、手动格式化、手动生成 docstring说明配置还没完全接上如果我把这些过程的关键点都摆在这里你照着配完应该能感受到从「打开代码靠猜」到「打开代码靠工具提示」的差别。希望这篇能帮你省下半天折腾时间。本文还有配套的精品资源点击获取
返回列表