Python设置参考

Visual Studio Code 的 Python 扩展具有高度可配置性。本页描述了您可以使用的关键设置。

有关在 VS Code 中使用设置的一般信息,请参阅用户和工作区设置,以及变量参考以获取有关预定义变量支持的信息。

常规 Python 设置

设置
(Python)
默认 描述
condaPath "conda" 可执行文件的路径conda
defaultInterpreterPath "python" Python 扩展首次加载工作区时要使用的默认 Python 解释器的路径,或包含 Python 解释器的文件夹的路径。
可以使用${workspaceFolder}和等变量${workspaceFolder}/.venv
使用文件夹路径允许处理项目的任何人在文件夹中创建.venv适合其操作系统的环境,而不必指定精确的依赖于平台的路径。然后可以将该文件settings.json包含在源代码存储库中。
注意:为工作区选择解释器后对此设置所做的更改将不会被 Python 扩展应用或考虑。Python 扩展不会自动添加或更改此设置。
interpreter.infoVisibility "onPythonRelated" 控制何时在状态栏上显示选定的解释器信息。
默认情况下,它仅在编辑器中打开 Python 相关文件时显示。如果您希望它始终显示在状态栏上,或者完全隐藏,
您可以将其设置为。"always""never"
pipenvPath "pipenv" 用于激活的 pipelinev 可执行文件的路径。
venvFolders [] 创建虚拟环境的文件夹的路径。
根据所使用的虚拟化工具,它可以是项目本身:${workspaceFolder},也可以是并排放置的所有虚拟环境的单独文件夹:.\envs~/.virtualenvs等。
envFile "${workspaceFolder}/
.env"
包含环境变量定义的文件的绝对路径。
请参阅配置 Python 环境 - 环境变量定义文件
globalModuleInstallation false --user指定是仅使用命令行参数(默认)为当前用户安装软件包,还是为全局环境中的所有用户安装软件包(当设置为 时true)。使用虚拟环境时被忽略。
有关该--user参数的更多信息,请参阅pip - 用户安装
poetryPath "poetry" 指定Poetry 依赖管理器可执行文件(如果已安装)的位置。默认值假定"poetry"可执行文件位于当前路径中。
当 Poetry 可用且poetry.lock工作区文件夹中有文件时,Python 扩展使用此设置来安装包。
terminal.launchArgs [] 当您使用Python: Run Python File in Terminal等命令运行文件时,启动向 Python 解释器提供的参数。
launchArgs列表中,每个项目都是一个由空格分隔的顶级命令行元素(包含空格的引用值是单个顶级元素,因此是列表中的一项)。
例如,对于参数--a --b --c {"value1" : 1, "value2" : 2},列表项应为["--a", "--b", "--c", "{\"value1\" : 1, \"value2\" : 2}\""]
请注意,VS Code 在调试时会忽略此设置,因为它会使用您在launch.json.
terminal.executeInFileDir false 指示是否运行文件目录中的文件而不是当前文件夹中的文件。
terminal.activateEnvironment true 指示在创建新终端时是否自动激活您使用Python: Select Interpreter命令选择的环境。
例如,当此设置为true并且您选择虚拟环境时,扩展程序会在创建新终端时自动运行环境的激活source env/bin/activate命令(在 macOS/Linux 上;env\scripts\activate在 Windows 上)。
terminal.activateEnvInCurrentTerminal false 指定在激活 Python 扩展时是否使用所选的虚拟环境激活当前打开的终端。
terminal.focusAfterLaunch false 启动 Python 终端时是否将光标焦点切换到终端。
logging.level error 指定扩展要执行的日志记录级别。
随着所提供信息的级别不断增加,可能的日志记录级别为offerrorwarninfodebug
当设置为 时off(不推荐),仍然会显示基本信息,例如启动信息和 Python 扩展运行的命令。
在该error级别,将显示基本信息和错误。
在该warn级别,将显示基本信息、错误信息和警告信息。在该info级别,将显示基本、错误、警告以及方法执行时间和返回值等附加信息。此时,该debug关卡不显示附加信息。
experiments.enabled true 在 Python 扩展中启用A/B 实验。如果启用,您可能会获得建议的增强功能和/或功能。

代码分析设置

IntelliSense 引擎设置

注意:如果您从未更改过语言服务器设置,则您的语言服务器将通过“默认”设置值设置为 Pylance。

设置
(Python)
默认 描述
languageServer 默认 定义语言服务器的类型(Default、Pylance、Jedi 和 None)。

Python 语言服务器设置

Pylance 语言服务器

python.languageServer当是Pylance或 时,应用语言服务器设置Default。如果您在使用语言服务器时遇到困难,请参阅语言服务器存储库中的故障排除。

设置
(python.analysis.)
默认 描述
typeCheckingMode 离开 指定要执行的类型检查分析的级别。
可用值为offbasicstrict
当设置为off不进行类型检查分析时;产生未解析的导入/变量诊断。
当设置basic为非类型检查相关规则( 中的所有规则off)时,将使用基本类型检查规则。
当设置为strict最高错误严重性的所有类型检查规则(包括offbasic类别中的所有规则)时,将使用。
diagnosticMode 仅打开文件 指定语言服务器分析哪些代码文件中的问题。
可用值为workspaceopenFilesOnly
include [] 应包含在分析中的目录或文件的路径。
如果未指定路径,Pylance 默认为包含工作区根目录的目录。
路径可以包含通配符,例如**(一个目录或多级目录)、*(零个或多个字符的序列)或?(单个字符)。
exclude [] 不应包含在分析中的目录或文件的路径。
这些会覆盖设置下列出的目录python.analysis.include,从而允许排除特定的子目录。
请注意,如果此exclude设置中列出的文件被不在排除列表中的源文件引用/导入,则它们可能仍包含在分析中。
路径可以包含通配符,例如**(一个目录或多级目录)、*(零个或多个字符的序列)或?(单个字符)。
如果未指定排除路径,Pylance 会自动排除以下目录:**/node_modules**/\_\_pycache\_\_.git任何虚拟环境目录。
ignore [] 应抑制其诊断输出(错误和警告)的目录或文件的路径,即使它们是包含文件或包含文件的传递闭包内。
路径可以包含通配符,例如**(一个目录或多级目录)、*(零个或多个字符的序列)或?(单个字符)。如果未提供值,则将使用(如果设置)
的值。python.linting.ignorePatterns
stubPath ./打字 指定包含自定义类型存根的目录的路径。每个包的类型存根文件应位于其自己的子目录中。
autoSearchPaths 真的 指示是否根据某些预定义名称(例如src)自动添加搜索路径。可用值为truefalse
extraPaths [] 指定导入解析的额外搜索路径。
接受指定为字符串的路径,如果有多个路径,则以逗号分隔。例如:["path 1","path 2"].
indexing 真的 用于指定 Pylance 是否应在启动时索引用户文件以及已安装的第三方库,以在自动导入、快速修复、自动完成等功能中提供更完整的符号集。可接受的
值为truefalse
当设置为 时true,默认情况下 Pylance 会索引已安装软件包的顶级符号(即 下的符号__all__package/__init__.py以及最多 2000 个用户文件中的所有符号。
当设置为 时false,Pylance 将仅显示先前在编辑器中打开或加载的文件中已引用或使用的符号。
packageIndexDepths [] 用于覆盖已安装的包下有多少级别要在每个包的基础上进行索引。
默认情况下,仅对顶级模块建立索引(深度 = 1)。
要索引子模块,请将要索引的每个子模块级别的深度增加 1。
接受的值是对象的元组,例如{"name": "package name (str)", "depth": "depth to scan (int)", "includeAllSymbols": "whether to include all symbols (bool)"}.
如果includeAllSymbols设置为,则仅包含false每个包中的符号。__all__当它设置为 时true,Pylance 将索引文件中的每个模块/顶级符号声明。
使用示例:[{"name": "sklearn", "depth": 2, "includeAllSymbols": true}, {"name": "matplotlib", "depth": 3, "includeAllSymbols": false}]
userFileIndexingLimit 2000年 设置 Pylance 在工作区中索引的最大用户文件数。当设置为 -1 时,Pylance 将为所有文件建立索引。
请注意,索引文件是一项性能密集型任务。
autoFormatStrings 错误的 在字符串内输入“{”时,是否自动添加“f”前缀。
completeFunctionParens 错误的 为函数补全添加括号。接受的值为truefalse
useLibraryCodeForTypes 真的 当找不到类型存根时解析包的源代码。可用值为truefalse
autoImportCompletions 错误的 控制完工时汽车进口的提供。可用值为truefalse
importFormat absolute 定义自动导入模块时的默认格式。接受的值为absoluterelative
inlayHints.variableTypes 错误的 是否显示变量类型的嵌入提示。接受的值为truefalse
inlayHints.functionReturnTypes 错误的 是否显示函数返回类型的嵌入提示。接受的值为truefalse
inlayHints.callArgumentNames 错误的 是否显示调用参数名称的嵌入提示。接受的值为truefalse
inlayHints.pytestParameters 错误的 是否显示 pytest 夹具参数类型的嵌入提示。接受的值为truefalse
diagnosticSeverityOverrides {} 允许用户覆盖各个诊断的严重性级别。
对于每条规则,可用的严重性级别为error(红色波形图)、warning(黄色波形图)、information(蓝色波形图)和none(规则已禁用)。
有关用于诊断严重性规则的键的信息,请参阅下面的诊断严重性规则部分。
fixAll [] 运行“全部修复”命令或代码操作时要运行的代码操作列表source.fixAll
此列表中接受的值:
  • source.unusedImports:删除打开文件中所有未使用的导入
  • source.convertImportFormatpython.analysis.importFormat:根据设置转换导入
logLevel Error 指定语言服务器要执行的日志记录级别。
随着所提供信息的级别不断增加,可能的日志记录级别为ErrorWarningInformationTrace

诊断严重性规则

python.analysis.diagnosticSeverityOverrides本部分详细介绍了可以使用以下示例中所示的设置进行自定义的所有可用规则。

{
  "python.analysis.diagnosticSeverityOverrides": {
    "reportUnboundVariable": "information",
    "reportImplicitStringConcatenation": "warning"
  }
}
价值 描述
reportGeneralTypeIssues 对一般类型不一致、不支持的操作、参数/参数不匹配等进行诊断。这涵盖了其他规则未涵盖的所有基本类型检查规则。它不包括语法错误。
reportPropertyTypeMismatch 对传递给 setter 的值的类型不可分配给 getter 返回的值的属性进行诊断。这种不匹配违反了属性的预期用途,属性的作用就像变量一样。
reportFunctionMemberAccess 函数成员访问的诊断。
reportMissingImports 对没有相应导入的 python 文件或类型存根文件的导入进行诊断。
reportMissingModuleSource 对没有相应源文件的导入进行诊断。当找到类型存根但未找到模块源文件时会发生这种情况,表明使用此执行环境时代码可能会在运行时失败。类型检查将使用类型存根完成。
reportMissingTypeStubs 对没有相应类型存根文件(typeshed 文件或自定义类型存根)的导入进行诊断。类型检查器需要类型存根才能在分析方面发挥最佳作用。
reportImportCycles 周期性进口链的诊断。这些不是 Python 中的错误,但它们确实会减慢类型分析速度,并且经常暗示架构分层问题。一般来说,应该避免它们。
reportUnusedImport 针对该文件中未引用的导入符号的诊断。
reportUnusedClass 诊断具有未访问的私有名称(以下划线开头)的类。
reportUnusedFunction 对具有未访问的私有名称(以下划线开头)的函数或方法进行诊断。
reportUnusedVariable 未访问的变量的诊断。
reportDuplicateImport 对导入多次的导入符号或模块进行诊断。
reportWildcardImportFromLibrary 从外部库导入通配符的诊断。
reportOptionalSubscript 尝试对具有可选类型的变量添加下标(索引)的诊断。
reportOptionalMemberAccess 对尝试访问具有可选类型的变量成员的诊断。
reportOptionalCall 对尝试调用具有可选类型的变量的诊断。
reportOptionalIterable 对尝试使用可选类型作为可迭代值(例如在 for 语句中)的诊断。
reportOptionalContextManager 尝试使用可选类型作为上下文管理器(作为 with 语句的参数)的诊断。
reportOptionalOperand 尝试使用可选类型作为二元或一元运算符(如“+”、“==”、“or”、“not”)的操作数的诊断。
reportUntypedFunctionDecorator 对没有类型注释的函数装饰器的诊断。这些模糊了函数类型,破坏了许多类型分析功能。
reportUntypedClassDecorator 对没有类型注释的类装饰器的诊断。这些模糊了类类型,破坏了许多类型分析功能。
reportUntypedBaseClass 对无法静态确定类型的基类进行诊断。这些模糊了类类型,破坏了许多类型分析功能。
reportUntypedNamedTuple 使用“namedtuple”而不是“NamedTuple”时的诊断。前者不包含类型信息,而后者则包含。
reportPrivateUsage 诊断私有或受保护变量或函数的错误使用。受保护的类成员以单个下划线开头_,只能由子类访问。私有类成员以双下划线开头,但不以双下划线结尾,并且只能在声明类中访问。如果在类外部声明的变量和函数的名称以单下划线或双下划线开头,则它们被视为私有,并且不能在声明模块之外访问它们。
reportConstantRedefinition 诊断尝试重新定义名称全部大写并带有下划线和数字的变量。
reportIncompatibleMethodOverride 对以不兼容方式重写基类中同名方法(参数数量错误、参数类型不兼容或返回类型不兼容)的方法的诊断。
reportIncompatibleVariableOverride 对用与基类符号类型不兼容的类型覆盖基类中同名符号的类变量声明进行诊断。
reportInvalidStringEscapeSequence 诊断字符串文字中使用的无效转义序列。Python 规范指出,此类序列将在未来版本中产生语法错误。
reportUnknownParameterType 对类型未知的函数或方法的输入或返回参数进行诊断。
reportUnknownArgumentType 对类型未知的函数或方法的调用参数进行诊断。
reportUnknownLambdaType 对类型未知的 lambda 的输入或返回参数进行诊断。
reportUnknownVariableType 对类型未知的变量进行诊断。
reportUnknownMemberType 对类型未知的类或实例变量进行诊断。
reportMissingTypeArgument 在不提供显式或隐式类型参数的情况下使用泛型类时的诊断。
reportInvalidTypeVarUse 诊断函数签名中类型变量的不当使用。
reportCallInDefaultInitializer 对默认值初始化表达式中的函数调用的诊断。此类调用可以屏蔽在模块初始化时执行的昂贵操作。
reportUnnecessaryIsInstance 对“isinstance”或“issubclass”调用进行诊断,其中结果静态确定为始终为真或始终为假。此类调用通常表明存在编程错误。
reportUnnecessaryCast 对静态确定为不必要的“cast”调用进行诊断。此类调用有时表明存在编程错误。
reportAssertAlwaysTrue 对可能始终断言的“断言”语句的诊断。这可能表明存在编程错误。
reportSelfClsParameterName 诊断实例方法中丢失或命名错误的“self”参数以及类方法中的“cls”参数。元类(从“type”派生的类)中的实例方法允许使用“cls”作为实例方法。
reportImplicitStringConcatenation 对两个或多个彼此跟随的字符串文字的诊断,指示隐式串联。这被认为是一种不好的做法,并且经常掩盖诸如缺少逗号之类的错误。
reportUndefinedVariable 未定义变量的诊断。
reportUnboundVariable 对未绑定和可能未绑定变量的诊断。
reportInvalidStubStatement 对不应出现在存根文件中的语句进行诊断。
reportUnusedCallResult 对结果未被消耗且不为 None 的调用表达式的诊断。
reportUnsupportedDunderAll 对在 上执行的不受支持的操作进行诊断__all__
reportUnusedCoroutine 对返回协程且其结果不被消耗的调用表达式的诊断。

自动完成设置

设置
(python.autoComplete。)
默认 描述 也可以看看
extraPaths [] 指定要为其加载自动完成数据的其他包的位置。 编辑

测试设置

一般测试

设置
(python.testing。)
默认 描述 也可以看看
cwd 无效的 指定测试的可选工作目录。 测试
promptToConfigure true 指定如果发现潜在的测试,VS Code 是否提示配置测试框架。 测试
debugPort 3000 用于调试单元测试的端口号。 测试
autoTestDiscoverOnSaveEnabled true 指定保存测试文件时是否启用或禁用自动运行测试发现。 测试

单元测试框架

设置
(python.testing。)
默认 描述 也可以看看
unittestEnabled false 指定是否启用unittest进行测试。 测试
unittestArgs ["-v", "-s", ".", "-p", "*test*.py"] 传递给unittest的参数,其中由空格分隔的每个顶级元素都是列表中的单独项目。 测试

pytest框架

设置
(python.testing。)
默认 描述 也可以看看
pytestEnabled false 指定是否启用 pytest 进行测试。 测试
pytestPath "pytest" pytest 的路径。如果 pytest 位于当前环境之外,请使用完整路径。 测试
pytestArgs [] 传递给 pytest 的参数,其中由空格分隔的每个顶级元素都是列表中的单独项目。在安装了 pytest-cov 的情况下调试测试时,请包含--no-cov在这些参数中。 测试

预定义变量

Python 扩展设置支持预定义变量。与常规 VS Code 设置类似,变量使用${variableName}语法。具体来说,该扩展支持以下变量:

  • ${cwd} - 任务运行程序启动时的当前工作目录

  • ${workspaceFolder} - 在 VS Code 中打开的文件夹的路径

  • ${workspaceRootFolderName} - 在 VS Code 中打开的文件夹的名称,不带任何斜杠 (/)

  • ${workspaceFolderBasename} - 在 VS Code 中打开的文件夹的名称,不带任何斜杠 (/)

  • ${file} - 当前打开的文件

  • ${relativeFile} - 当前打开的文件相对于workspaceFolder

  • ${relativeFileDirname} - 当前打开的文件的目录名相对于workspaceFolder

  • ${fileBasename} - 当前打开的文件的基本名称

  • ${fileBasenameNoExtension} - 当前打开的文件的基本名称,没有文件扩展名

  • ${fileDirname} - 当前打开文件的目录名

  • ${fileExtname} - 当前打开的文件的扩展名

  • ${lineNumber} - 活动文件中当前选定的行号

  • ${selectedText} - 活动文件中当前选定的文本

  • ${execPath} - 正在运行的 VS Code 可执行文件的路径

有关预定义变量和示例用法的其他信息,请参阅常规 VS Code 文档中的变量参考。

下一步

  • Python 环境- 控制使用哪个 Python 解释器进行编辑和调试。
  • 编辑代码- 了解 Python 的自动完成、IntelliSense、格式化和重构。
  • Linting - 启用、配置和应用各种 Python linter。
  • 调试- 学习本地和远程调试 Python。
  • 测试- 配置测试环境并发现、运行和调试测试。