Skip to content

在 VSCode 中开发 Python

插件安装

基本的 Python 插件

下面几个插件是 Python 开发必备的插件:

安装上述插件后,可以在 VSCode 的设置(全局的 settings.json 文件)中添加如下配置

json
{
    "python.analysis.autoImportCompletions": true, // -- 自动导入补全 import
}

静态代码检查 Pylint

在 VSCode 中搜索安装 Pylint,启用 Pylint 对 Python 代码进行静态检查。

安装完成后,可以在 VSCode 的设置(全局的 settings.json 文件)中添加如下配置

json
{
    "pylint.enabled": true, // -- 启用 Pylint 
    "pylint.importStrategy": "useBundled",
    "pylint.args": [
        // "--disable=invalid-name,", // 建议开启检查
        "--disable=missing-module-docstring",
        "--disable=W0612,W0631,W0703,W0621,W0613,W0611,W1308,C0411,C0111,C0103,C0301,C0304,C0305,E1101,R0913,R0914,R0915,R0903",
    ],
}
  • "pylint.enabled": true 表示启用 Pylint,实际上安装 Pylint 插件后默认是启用的。但是如果需要禁用 Pylint,可以设置为 false。、
  • "pylint.importStrategy": "useBundled" 表示使用 Pylint 插件自带的 import 排序规则。
  • "pylint.args" 表示 Pylint 的参数,可以参考 Pylint Standard Checkers 进行配置,这里提供的是一些常用的禁用规则:
    • --disable 表示禁用指定的检查器,多个检查器之间用逗号分隔。例如禁用 invalid-name 是禁用变量名不符合规范的检查、missing-module-docstring 是禁用模块缺少文档字符串的检查。
    • --disable=W0612,... 则是禁用指定的警告,多个警告之间用逗号分隔。警告可以参考 Pylint Messages

导入包排序 isort

在 VSCode 中搜索安装 isort,启用 isort 对 Python 代码进行 import 排序。

安装完成后,可以在 VSCode 的设置(全局的 settings.json 文件)中添加如下配置

json
{
    "python.sortImports.args": [
        "--profile", "black",
    ],
}
  • "python.sortImports.args" 表示 isort 的参数,可以参考 isort Command Line Usage 进行配置,这里提供的是使用 black 风格的 import 排序规则。也可以使用 pycharmgoogledjango 等风格。

isort 也提供了一些 Action Comments,可以通过注释的方式来控制 import 排序。

例如,可以使用 # isort: off# isort: on 来标记不想被 isort 排序的代码块。

python
# isort: off
import sys
import os
# isort: on

其他的 Action Comments 还有:

  • isort: skip_file
  • isort: skip
  • isort: split

类型检查 Mypy Type Checker

在 VSCode 中搜索安装 Mypy,启用 Mypy 对 Python 代码进行类型检查。

安装完成后,可以在 VSCode 的设置(全局的 settings.json 文件)中添加如下配置

json
{
    "mypy-type-checker.importStrategy": "useBundled",
    "mypy-type-checker.args": [
        "--follow-imports=skip",
        "--show-column-numbers=True",
        "--warn_return_any=True",
        "--warn-unreachable=True",
    ],
}
  • "mypy-type-checker.importStrategy": "useBundled" 表示使用 Mypy 插件自带的 import 排序规则。
  • "mypy-type-checker.args" 表示 Mypy 的参数,可以参考 Mypy Command Line Options 进行配置,这里提供的是一些常用的参数:

代码格式化工具 Black

在 VSCode 中搜索安装 Black Formatter,启用 Black 对 Python 代码进行格式化。

安装完成后,可以在 VSCode 的设置(全局的 settings.json 文件)中添加如下配置

json
{
    "python.formatting.provider": "black",
    "python.formatting.blackArgs": [
        "--line-length", "88",
        "--skip-string-normalization",
    ],
}
  • "python.formatting.provider": "black" 表示使用 Black 作为 Python 代码格式化工具。
  • "python.formatting.blackArgs" 表示 Black 的参数,可以参考 Black Command Line Usage
    • [--line-length](line 表示设置行宽,默认是 88
    • --skip-string-normalization 表示跳过字符串规范化,由于 Black 会默认将单引号字符串转换为双引号字符串,可以使用该参数跳过这个规范化。

如果有部分代码不想被 Black 格式化,可以在代码中使用 # fmt: skip# fmt: off# fmt: on 标记 Ignoring sections

  • # fmt: skip 表示跳过当前行的格式化。
  • # fmt: off# fmt: on 表示跳过这两个标记之间的代码块的格式化。
python
# fmt: off
def foo():
    print("This is a long string that should not be wrapped.")
# fmt: on

print("This is a long string that should be wrapped.") # fmt: skip

可以使用混合注释,例如结合 pylint 和 Black 的注释

python
# fmt: skip # pylint # noqa

或者逗号分隔的列表

python
# fmt: skip; pylint; noqa