VS Code禁用Pylance/Python扩展linting后保存仍自动修改格式怎么办
根本原因说明
你关闭的是Python linter功能,但你遇到的自动修改文件行为是保存时自动格式化或Pylance 代码自动修复触发的,二者是独立功能,因此修改lint相关配置不会生效。
解决方案
第一步:关闭Python文件的保存自动格式化
打开settings.json,添加如下配置,仅针对Python文件关闭保存格式化,不影响其他类型文件的格式化行为:"[python]": { "editor.formatOnSave": false }如果你不想完全关闭格式化,只是要避免文档字符串周围被加多余换行,可以调整对应格式化工具的规则:
比如你用autopep8作为格式化器,可添加配置忽略相关换行规则:"python.formatting.autopep8Args": ["--ignore=E302,E305,E265"]如果你用Black作为格式化器,可调整行长度阈值减少强制换行:
"python.formatting.blackArgs": ["--line-length", "120"]第二步:关闭Pylance保存时自动修复功能
如果你开启了保存时自动修复代码问题的配置,就算关闭linter,Pylance依然会执行默认修复操作,添加如下配置关闭:"[python]": { "editor.codeActionsOnSave": { "source.fixAll": false, "source.organizeImports": false } }第三步:恢复Pylance语言服务器配置
你之前将python.languageServer设为None会导致Pylance完全不生效,无法使用语法高亮、自动补全功能,改回如下配置即可:"python.languageServer": "Pylance"第四步:排查工作区配置覆盖
检查当前项目根目录下.vscode/settings.json文件的内容,工作区配置优先级高于全局用户配置,若该文件内有开启formatOnSave或codeActionsOnSave的配置,同步修改即可。第五步:排查独立格式化扩展
如果你单独安装了Black Formatter、autopep8等独立的Python格式化扩展,需要同步关闭这些扩展的保存时格式化开关,或直接卸载不需要的格式化扩展。
内容的提问来源于stack exchange,提问作者Skully

