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 |
指定扩展要执行的日志记录级别。 随着所提供信息的级别不断增加,可能的日志记录级别为 off 、error 、warn 、info 和debug 。当设置为 时 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 | 离开 | 指定要执行的类型检查分析的级别。 可用值为 off 、basic 和strict 。当设置为 off 不进行类型检查分析时;产生未解析的导入/变量诊断。当设置 basic 为非类型检查相关规则( 中的所有规则off )时,将使用基本类型检查规则。当设置为 strict 最高错误严重性的所有类型检查规则(包括off 和basic 类别中的所有规则)时,将使用。 |
diagnosticMode | 仅打开文件 | 指定语言服务器分析哪些代码文件中的问题。 可用值为 workspace 和openFilesOnly 。 |
include | [] | 应包含在分析中的目录或文件的路径。 如果未指定路径,Pylance 默认为包含工作区根目录的目录。 路径可以包含通配符,例如 ** (一个目录或多级目录)、* (零个或多个字符的序列)或? (单个字符)。 |
exclude | [] | 不应包含在分析中的目录或文件的路径。 这些会覆盖设置下列出的目录 python.analysis.include ,从而允许排除特定的子目录。请注意,如果此 exclude 设置中列出的文件被不在排除列表中的源文件引用/导入,则它们可能仍包含在分析中。路径可以包含通配符,例如 ** (一个目录或多级目录)、* (零个或多个字符的序列)或? (单个字符)。如果未指定排除路径,Pylance 会自动排除以下目录: **/node_modules 、**/\_\_pycache\_\_ 和.git 任何虚拟环境目录。 |
ignore | [] | 应抑制其诊断输出(错误和警告)的目录或文件的路径,即使它们是包含文件或包含文件的传递闭包内。 路径可以包含通配符,例如 ** (一个目录或多级目录)、* (零个或多个字符的序列)或? (单个字符)。如果未提供值,则将使用(如果设置)的值。 python.linting.ignorePatterns |
stubPath | ./打字 | 指定包含自定义类型存根的目录的路径。每个包的类型存根文件应位于其自己的子目录中。 |
autoSearchPaths | 真的 | 指示是否根据某些预定义名称(例如src )自动添加搜索路径。可用值为true 和false 。 |
extraPaths | [] | 指定导入解析的额外搜索路径。 接受指定为字符串的路径,如果有多个路径,则以逗号分隔。例如: ["path 1","path 2"] . |
indexing | 真的 | 用于指定 Pylance 是否应在启动时索引用户文件以及已安装的第三方库,以在自动导入、快速修复、自动完成等功能中提供更完整的符号集。可接受的 值为 true 或false 。当设置为 时 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 | 错误的 | 为函数补全添加括号。接受的值为true 和false 。 |
useLibraryCodeForTypes | 真的 | 当找不到类型存根时解析包的源代码。可用值为true 和false 。 |
autoImportCompletions | 错误的 | 控制完工时汽车进口的提供。可用值为true 和false 。 |
importFormat | absolute |
定义自动导入模块时的默认格式。接受的值为absolute 或relative 。 |
inlayHints.variableTypes | 错误的 | 是否显示变量类型的嵌入提示。接受的值为true 或false 。 |
inlayHints.functionReturnTypes | 错误的 | 是否显示函数返回类型的嵌入提示。接受的值为true 或false 。 |
inlayHints.callArgumentNames | 错误的 | 是否显示调用参数名称的嵌入提示。接受的值为true 或false 。 |
inlayHints.pytestParameters | 错误的 | 是否显示 pytest 夹具参数类型的嵌入提示。接受的值为true 或false 。 |
diagnosticSeverityOverrides | {} | 允许用户覆盖各个诊断的严重性级别。 对于每条规则,可用的严重性级别为 error (红色波形图)、warning (黄色波形图)、information (蓝色波形图)和none (规则已禁用)。有关用于诊断严重性规则的键的信息,请参阅下面的诊断严重性规则部分。 |
fixAll | [] |
运行“全部修复”命令或代码操作时要运行的代码操作列表source.fixAll 。此列表中接受的值:
|
logLevel | Error |
指定语言服务器要执行的日志记录级别。 随着所提供信息的级别不断增加,可能的日志记录级别为 Error 、Warning 、Information 和Trace 。 |
诊断严重性规则
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 文档中的变量参考。