VSCode Pylance 扩展的使用和设置说明
VSCode Pylance 扩展
VSCode 中的Pylance
扩展,为 Python 语言开发提供了强大的支持,比如,代码的智能提示,补全,诊断和分析。在一般情况下,该扩展会跟随 VSCode 的Python
扩展一同安装,并将成为Python
扩展认定的 Python 语言服务器。
VSCode Pylance 扩展何时被激活?
如果Pylance
扩展没有被禁用,那么当 VSCode 打开任何被解析为 Python 语言的代码文件(比如,常见的py
文件),或者 VSCode 在启动过程中检测到工作区根目录存在文件pyrightconfig.json
时,Pylance
扩展将被激活。
VSCode Pylance 扩展仅诊断文本格式的 Python 代码文件
Pylance
扩展仅诊断文本格式的 Python 代码文件是否存在问题,对于编译后的字节码文件,其他二进制格式的 Python 文件,以及zip
格式的压缩文件中的文件,Pylance
不会或无法进行诊断。
VSCode Pylance 扩展仅分析文本格式的 Python 代码文件
如果代码中使用的 Python 模块没有对应的类型存根文件,那么Pylance
扩展将尝试分析该模块对应的文本格式的代码文件(包括存在于zip
压缩文件中的),以在 VSCode 中实现代码的智能提示和补全,对于编译后的字节码文件,其他二进制格式的 Python 文件,Pylance
不会或无法进行分析。
分析和诊断这两个概念,也许会产生一些困惑,我们需要将诊断视为分析的一部分,分析的过程中可能会进行诊断,也可能不会。
什么是 Python 类型存根文件?
Python 类型存根文件,其扩展名为pyi
,与py
代码文件类似,可以包含 Python 代码,不同的是,类型存根文件一般仅保留与定义有关的关键代码,其余部分使用…
来代替(比如,函数或方法的主体代码),以尽量缩小文件的体积。
Python 类型存根文件可被Pylance
扩展用于代码的智能提示,补全,诊断等操作,通常针对已经安装的 Python 第三方包或模块。如果需要分析的 Python 模块存在对应的pyi
类型存根文件,那么模块对应的py
或其他形式的文件将被忽略。存放 Python 类型存根文件的目录的目录结构,应该与被导入模块或包所在的 Python 模块搜索路径中的目录的目录结构保持一致。
配置 VSCode
关于如何指定默认的 Python 语言服务器,你可以查看安装 VSCode 扩展 Pylance一段。
设置 VSCode Pylance 扩展
和大部分的 VSCode 扩展一样,Pylance
为开发人员提供了设置项,你可以通过编辑工作区.vscode
文件夹中的setting.json
文件,或在 VSCode 的设置面板中编辑相关项,来调整和改变Pylance
扩展所实现的某些功能。
设置 VSCode Pylance 扩展的 Python 类型检查功能
Pylance
扩展的设置项python.analysis.typeCheckingMode
,可用于设置Pylance
的 Python 类型检查模式(Type Checking Mode),不同的类型检查模式对应了不同的 Python 类型检查规则集(Rule Set),从松散到严格,类型检查模式分为以下几种。
- off 模式
off
模式是python.analysis.typeCheckingMode
设置项的默认值,他表示不对 Python 代码进行类型检查,仅诊断无效的语法,未定义而被读取的内容(变量,函数等),以及未能被解析的导入(比如,导入了无法访问的 Python 模块或包,或导入了不存在的内容)。- basic 模式
basic
模式包含off
模式中的所有规则,以及基础的 Python 类型检查规则,比如,不应该访问未知的类特性,调用方法或函数时应该给出全部的必要参数。- standard 模式
standard
模式包含off
模式中的所有规则,以及基础和标准的 Python 类型检查规则,因此他相对于basic
模式更为严格。- strict 模式
strict
模式是最严格的类型检查模式,包含off
模式中的所有规则,以及所有 Python 类型检查规则,比如,报告无法推导出其类型的变量或参数。
{
// 最严格的模式 strict
"python.analysis.typeCheckingMode": "strict",
}
扩展 Pylance 的类型检查不会阻止 VSCode 运行 Python 代码
虽然Pylance
扩展的类型检查功能,可以检测代码中存在的各种问题,并将其显示在 VSCode 的问题面板中,但Pylance
并不会阻止 Python 代码的运行或调试。
如何自定义 Python 类型检查规则的严重性级别?
每一个 Python 类型检查规则都拥有自己的严重性级别,VSCode 和Pylance
可以根据这些严重性级别来执行不同的操作。Pylance
扩展的设置项python.analysis.diagnosticSeverityOverrides
是一个包含一系列属性的对象(默认值为{}
),可用于自定义 Python 类型检查规则的严重性级别,其中属性的名称为类型检查规则的名称,属性的值为以下几种之一,error
(错误,红色波浪线,等同于布尔值true
),warning
(警告,黄色波浪线),information
(信息,蓝色波浪线),none
(禁用规则,等同于布尔值false
)。
关于 Python 类型检查的所有规则的详细信息(英文),可以在 GitHub 查看。
{
// 自定义 Python 类型检查规则的严重性级别
"python.analysis.diagnosticSeverityOverrides": {
// 无法被解析的导入
"reportMissingImports": "warning"
},
}
设置需要被 VSCode Pylance 扩展诊断的 Python 文件
Pylance
扩展的设置项python.analysis.diagnosticMode
(诊断模式),可用于设置Pylance
在什么范围内诊断 Python 代码文件,诊断后得到的问题将显示在 VSCode 的问题面板中,该设置项的有效值为以下两种。
- openFilesOnly 模式
openFilesOnly
模式是python.analysis.diagnosticMode
设置项的默认值,他表示Pylance
仅诊断已在 VSCode 中打开的 Python 代码文件。- workspace 模式
workspace
模式表示Pylance
将诊断 VSCode 工作区中的所有 Python 代码文件,以及 VSCode 打开的 Python 代码文件。
{
// 诊断工作区所有以及打开的 Python 代码文件
"python.analysis.diagnosticMode": "workspace",
}
扩展 Pylance 激活后才会诊断 VSCode 工作区中的所有 Python 代码文件
需要说明的是,将python.analysis.diagnosticMode
设置为workspace
模式,并不会改变Pylance
扩展的激活方式,你可能需要主动打开一个py
文件,以启动诊断所有 Python 代码文件的任务。
如何设置需要被 VSCode Pylance 扩展诊断的文件?
Pylance
扩展的设置项python.analysis.include
是一个包含路径信息的数组(其默认值为[]
),当设置项python.analysis.diagnosticMode
的值为workspace
时,只有路径开始部分符合该数组任一项的 Python 代码文件才会被Pylance
进行诊断(当然,VSCode 直接打开的文件也会被诊断),这表示如果python.analysis.include
给出了一个文件夹的路径,那么该文件夹及其所有子文件夹中的 Python 代码文件都将被Pylance
诊断。
如果python.analysis.include
没有给出任何路径,比如默认值[]
,那么Pylance
将诊断 VSCode 工作区根目录及其所有子目录中的 Python 代码文件。
扩展 Pylance 的 python.analysis.include 设置项可包含相对路径或绝对路径
如果你在Pylance
设置项python.analysis.include
中使用相对路径,那么该相对路径会从 VSCode 的工作区根目录开始计算,比如,src\
和.\src\
(Windows)均表示工作区的src
文件夹。除了相对路径,在python.analysis.include
中使用绝对路径也是可行的,无论这些路径是否包含在 VSCode 的当前工作区中,是的,Pylance
可以诊断工作区之外的 Python 代码文件。
扩展 Pylance 的 python.analysis.include 设置项可包含路径通配符
Pylance
设置项python.analysis.include
可以包含一些路径通配符(Wildcard Character),比如,?
表示文件或文件夹名称中的单个字符,*
表示文件或文件夹名称中的零个或多个字符,**
表示零个或多个文件夹组合的任意路径。
下面的设置项python.analysis.include
,包含了一组 Windows 中的路径。
{
// 需要被诊断的文件的路径信息
"python.analysis.include": [
// 以 s 和 c 开头的三个字符的文件夹
"s?c\\",
// src 文件夹的一级子文件夹
"src\\*\\",
// src 文件夹或其任意子文件夹中,以 s.py 结尾的文件或文件夹
"src\\**\\*s.py"
],
}
如何设置需要被 VSCode Pylance 扩展排除诊断的文件?
Pylance
扩展的设置项python.analysis.exclude
是一个包含路径信息的数组(其默认值为[]
),当设置项python.analysis.diagnosticMode
的值为workspace
时,路径开始部分符合该数组任一项的 Python 代码文件不会被Pylance
诊断(不包括 VSCode 直接打开的文件),即使他符合python.analysis.include
设置项中的路径信息。
如果python.analysis.exclude
没有给出任何路径,比如默认值[]
,那么Pylance
将排除 VSCode 工作区中所有名称为node_modules
,__pycache__
,.git
的文件夹(也可以指文件)中的所有 Python 代码文件。
python.analysis.exclude
设置项可以使用相对路径,绝对路径以及路径通配符,这一点与python.analysis.include
类似。
被 python.analysis.exclude 设置项排除的 Python 代码文件依然可能被 Pylance 诊断
如果一个 Python 代码文件被python.analysis.exclude
设置项排除,那么他依然可能被Pylance
诊断,当该文件在 VSCode 中打开,或被其他可被诊断的 Python 代码文件导入或引用时。需要指出,该功能的具体执行效果需要视具体情况而定。
下面的设置项python.analysis.exclude
,包含了一个 Windows 路径。
{
// 不需要诊断的文件的路径信息
"python.analysis.exclude": [
// src 文件夹或其任意子文件夹中,以 test.py 结尾的文件或文件夹
"src\\**\\*test.py"
],
}
设置忽略 VSCode Pylance 扩展诊断结果的 Python 文件
Pylance
扩展的设置项python.analysis.ignore
是一个包含路径信息的数组(其默认值为[]
),如果某个 Python 代码文件路径的开始部分符合该数组的某一项,那么Pylance
关于该文件的诊断结果(包括错误和警告)将被忽略(不予展示)。
与python.analysis.include
设置项类似,python.analysis.ignore
也可以使用相对路径,绝对路径以及路径通配符。
下面的设置项python.analysis.ignore
,包含了一个 Windows 路径。
{
// 忽略诊断结果的文件的路径信息
"python.analysis.ignore": [
// src 文件夹中名称包含 test 的一级子文件夹
"src\\*test*\\"
],
}
设置 VSCode Pylance 扩展的 Python 类型存根文件目录
Pylance
扩展的设置项python.analysis.stubPath
,可用于指定 Python 类型存根(Type Stub)文件所在的目录,与python.analysis.include
类似,你可以采用相对路径或绝对路径。python.analysis.stubPath
的默认值为typings
,即 VSCode 工作区根目录下的typings
文件夹。
VSCode Pylance 扩展使用 Python 类型存根文件带来的问题
由于除了python.analysis.stubPath
设置项指定的类型存根文件目录,Pylance
扩展自身也对类型存根文件进行管理,因此一些奇怪的现象可能会出现。比如,在 VSCode 中编写代码导入某个 Python 模块并使用该模块的函数或变量时,Pylance
可以提供智能提示和补全,但执行 Python 代码却显示模块未找到ModuleNotFoundError
。导致这种现象的原因可能是,Pylance
正在使用 Python 模块对应的类型存根文件,模块本身的代码文件并不存在,或者 Python 模块搜索路径设置不正确,使得模块无法被定位。当然,在这种情况下,Pylance
会提示此模块无法从源(Source)导入。
模块搜索路径
想要深入了解 Python 模块搜索路径,你可以查看Python 指南的Python 模块搜索路径介绍,Python 模块搜索路径中的目录有哪些一节。
{
// 指定类型存根文件目录为工作区的 my_typings 文件夹
"python.analysis.stubPath": "my_typings",
}
Pylance
扩展的设置项python.analysis.useLibraryCodeForTypes
是一个布尔值,可用于指定当需要分析的 Python 模块没有对应的类型存根文件时,是否分析该模块对应的 Python 代码文件,默认为true
,分析对应的代码文件。
VSCode Pylance 扩展将分析拥有 py.typed 文件的 Python 包
如果一个 Python 常规包(非命名空间包)没有类型存根文件,但其对应的文件夹包含文件py.typed
,那么Pylance
扩展将分析该 Python 包以及该包的所有常规子包(非命名空间包)和子模块,即使python.analysis.useLibraryCodeForTypes
被设置为false
。
包
想要了解 Python 常规包和命名空间包,你可以查看Python 指南的Python 包,常规包,命名空间包介绍一节。
{
// 不分析模块对应的代码文件,当类型存根文件不存在时
"python.analysis.useLibraryCodeForTypes": false,
}
设置 VSCode Pylance 扩展的额外 Python 模块路径
Pylance
扩展的设置项python.analysis.extraPaths
是一个包含额外模块路径信息的数组(其默认值为[]
),Pylance
可尝试在这些路径中查找并分析 Python 模块对应的代码文件,当他们被导入时。需要指出,额外模块路径不会影响 Python 自身的模块搜索路径。
在路径设置方面,python.analysis.extraPaths
与python.analysis.include
设置项类似,你可以使用相对路径,绝对路径以及路径通配符。python.analysis.extraPaths
中的路径需要指向文件夹或zip
压缩文件,指向其他可能会无效。
VSCode Pylance 扩展使用额外 Python 模块路径带来的问题
和使用 Python 类型存根文件类似,Pylance
扩展使用额外 Python 模块路径之后,可能导致诊断后没有问题的代码,在运行时提示模块未找到ModuleNotFoundError
,原因之一是 Python 模块搜索路径无法定位额外模块路径中的模块。
遇到这种情况,你可以调整 Python 模块搜索路径,使之包含额外模块路径指向的目录,或者修改导入模块的语句。
{
// 设置额外的 Python 模块路径
"python.analysis.extraPaths": [
// 在工作区根目录的 extra.zip 中搜索模块
"extra.zip"
],
}
Pylance
扩展的设置项python.analysis.autoSearchPaths
是一个布尔值,可用于指定是否启用 Python 模块自动搜索路径,将python.analysis.autoSearchPaths
设置为true
(默认值),Pylance
可尝试从一些预定义的路径(比如,VSCode 工作区根目录下的src
文件夹)中查找并分析 Python 模块对应的代码文件,当他们被导入时。
在效果方面,模块自动搜索路径与额外模块路径是相似的,只不过python.analysis.autoSearchPaths
中的路径是预设的,而python.analysis.extraPaths
中的路径则由开发人员指定。模块自动搜索路径同样不会影响 Python 自身的模块搜索路径,并可能在运行时提示模块未找到ModuleNotFoundError
。
{
// 禁用 Python 模块自动搜索路径
"python.analysis.autoSearchPaths": false,
}
设置 VSCode Pylance 扩展的 Python 索引编制功能
Pylance
扩展的设置项python.analysis.indexing
,可用于控制是否对用户文件(VSCode 工作区中的 Python 代码文件,其对应的模块应具备有效的完全限定名),Python 第三方包或模块进行索引编制(默认为true
,进行索引编制),有效的索引是Pylance
实现自动导入模块,添加导入语句等功能的前提。
VSCode Pylance 扩展会为哪些 Python 第三方包或模块编制索引?
除了直接位于 Python 第三方包目录中的模块,第三方包目录中的所有命名空间包,以及命名空间包中的所有子包和子模块,Pylance
扩展可以为任意第三方包或模块编制索引,当然,是否能够进行编制还将受到其他设置项的影响。
第三方包
关于 Python 第三方包的位置,你可以查看Python 指南的Python 第三方包的位置一段。
{
// 禁用 Python 索引编制功能
"python.analysis.indexing": false,
}
Pylance
扩展的设置项python.analysis.packageIndexDepths
是一个包含索引编制方案的数组,不同的 Python 包可以拥有不同的索引编制方案。在默认情况下,Pylance
仅为直接位于第三方包目录的 Python 包(不包含模块,以及包中的子包或子模块)编制索引。
如果想为 Python 包的子包或子模块编制索引,那么需要将对应方案的depth
设置项设置为2
(默认为1
),name
设置项设置为 Python 包的名称,如果想为子包的子包或子模块编制索引,则需要将depth
设置为3
,以此类推。如果希望为 Python 包或模块的所有特性编制索引,则需要将对应方案的includeAllSymbols
设置项设置为true
,在一些情况下,includeAllSymbols
并不能发挥其作用,Pylance
会为所有特性编制索引。
Pylance
扩展的设置项python.analysis.persistAllIndices
是一个布尔值,可用于设置是否将已经编制的 Python 第三方包和模块的索引,作为json
索引文件保存在Pylance
扩展安装目录的dist
文件夹的.cache
子文件夹中,以便下一次使用,默认为true
,保存。如果将python.analysis.persistAllIndices
设置为false
,那么json
索引文件不会被使用,即便他已经存在。
Pylance
扩展的设置项python.analysis.userFileIndexingLimit
,可用于设置进行索引编制的用户文件的最大数量,默认为2000
,如果设置为-1
,则表示不限制参与索引编制的用户文件的数量。由于索引编制可能会在短时间内进行大量的运算,因此,不建议将其设置为-1
。
VSCode Pylance 扩展为 Python 包或模块编制的 json 索引文件可能不会更新
Pylance
扩展存储的json
索引文件可能不会更新,无论是修改某个设置项,还是编辑 Python 包和模块中的代码,除非索引的内容有所增加,或存在必须更新的理由。
你可以在 VSCode 命令面板运行命令pylance.indexing.clearPersistedIndices
来清除所有的json
索引文件,或尝试找到并删除 Python 包对应的json
索引文件,以重新进行索引编制。
VSCode Pylance 扩展始终为被打开的 Python 代码文件编制索引
被 VSCode 直接打开的 Python 代码文件(文件对应的模块应具备有效的完全限定名)会被编制索引,无论设置项python.analysis.indexing
和python.analysis.userFileIndexingLimit
的值是什么。
{
// 不对工作区中的 Python 代码文件编制索引,除非是打开的文件
"python.analysis.userFileIndexingLimit": 0,
// 设置名称为 just_test 的第三方包的索引编制方案
"python.analysis.packageIndexDepths": [
{ "name": "just_test", "depth": 3, "includeAllSymbols": true }
],
}
设置 VSCode Pylance 扩展的代码补全功能
Pylance
扩展的设置项python.analysis.autoImportCompletions
,可用于设置是否启用 Python 导入语句补全功能,该功能可自动书写import
或from…import
导入 Python 模块,当你使用了模块特性且并未导入相关模块时,默认为false
,不进行导入语句的补全。如果python.analysis.indexing
设置项为false
,那么Pylance
的导入语句补全功能仅针对在 VSCode 中打开过的 Python 代码文件(文件对应的模块应具备有效的完全限定名)。
Pylance
扩展的设置项python.analysis.importFormat
,可用于设置 Python 导入语句补全的格式,其有效值包含以下两种。
- absolute 格式
absolute
格式是python.analysis.importFormat
设置项的默认值,他表示以完全限定名补全 Python 导入语句。- relative 格式
relative
格式表示尽可能以相对名称的方式补全 Python 导入语句,如果无法完成,则采用完全限定名。
Pylance
扩展的设置项python.analysis.completeFunctionParens
,可用于设置是否启用 Python 函数或方法括号的补全功能,该功能可在选择调用的函数或方法后自动书写括号()
,默认为false
,不进行函数或方法括号的补全。
Pylance
扩展的设置项python.analysis.autoFormatStrings
,可用于设置是否为 Python 字符串补全前缀f
,当你在字符串中书写{
时(请注意,该功能在某些情况下达不到预期效果)。python.analysis.autoFormatStrings
的默认值为false
,不进行前缀f
的补全。
{
// 启用导入语句的补全
"python.analysis.autoImportCompletions": true,
// 导入语句的补全采用相对名称
"python.analysis.importFormat": "relative",
// 启用函数或方法的括号补全
"python.analysis.completeFunctionParens": true,
// 启用字符串的 f 前缀补全(可能没有效果)
"python.analysis.autoFormatStrings": true,
}
设置 VSCode Pylance 扩展的代码嵌入提示功能
Pylance
扩展的设置项python.analysis.inlayHints.variableTypes
,可用于设置是否启用变量类型的嵌入提示功能(默认为false
,不启用),该功能将嵌入变量类型的描述,当你没有使用:
指明变量的类型,并且变量类型需要一个清晰的描述时。比如,a=[1,2]
会被嵌入描述,b=1
或c=set()
则不会。
Pylance
扩展的设置项python.analysis.inlayHints.functionReturnTypes
,可用于设置是否启用函数或方法返回值的类型嵌入提示功能(默认为false
,不启用),该功能将嵌入函数或方法返回值的类型描述,当你没有使用->
指明函数或方法返回值的类型时。
Pylance
扩展的设置项python.analysis.inlayHints.callArgumentNames
,可用于设置是否启用参数名称的嵌入提示功能,该功能会尝试为实参嵌入参数名称,当该实参的名称没有被指明时,以帮助开发人员有效的识别实参的含义。python.analysis.inlayHints.callArgumentNames
设置项的有效值包含以下几种。
- off
off
是python.analysis.inlayHints.callArgumentNames
设置项的默认值,他表示禁用参数名称的嵌入提示功能。- partial
partial
表示,如果一个实参既是位置参数又是命名参数,则尝试为其嵌入参数名称。- all
all
表示尝试为所有实参嵌入参数名称。
Pylance
扩展的设置项python.analysis.inlayHints.pytestParameters
,可用于设置是否启用针对pytest
函数或方法参数类型的嵌入提示功能(默认为false
,不启用),该功能会在 Python 的pytest
包能够推断出参数的类型,并且参数未使用:
指明类型时,尝试嵌入参数类型的描述。需要指出,使用python.analysis.inlayHints.pytestParameters
设置项的前提是具备可用的pytest
包,并且python.analysis.enablePytestSupport
设置项的值为true
。
Pylance
扩展的设置项python.analysis.enablePytestSupport
是一个布尔值,可用于设置是否启用对pytest
包的支持,默认为true
,启用。
函数
想要详细了解 Python 函数,参数和返回值,你可以查看Python 函数,参数,返回值介绍,以及 Python 函数的定义和调用一节。
{
// 启用变量类型的嵌入提示
"python.analysis.inlayHints.variableTypes": true,
// 启用函数或方法返回值的类型嵌入提示
"python.analysis.inlayHints.functionReturnTypes": true,
// 启用对所有参数的名称嵌入提示
"python.analysis.inlayHints.callArgumentNames": "all",
// 启用针对 pytest 函数或方法参数类型的嵌入提示
"python.analysis.inlayHints.pytestParameters": true,
// 禁用对 pytest 的支持,这将导致对 pytestParameters 的设置无效
"python.analysis.enablePytestSupport": false,
}
设置 VSCode Pylance 扩展的日志功能
Pylance
扩展的设置项python.analysis.logLevel
,可用于设置Pylance
将哪些内容输出为日志,他拥有以下有效取值。
- Error 级别
Error
级别表示仅将错误输出为日志。- Warning 级别
Warning
级别表示将错误和警告输出为日志。- Information 级别
Information
级别是设置项python.analysis.logLevel
的默认值,他表示将错误,警告和信息输出为日志。- Trace 级别
Trace
级别表示将错误,警告,信息和跟踪输出为日志。
什么是 VSCode Pylance 扩展的日志?
顾名思义,Pylance
日志是由扩展Pylance
在运行过程中输出的内容,这些内容可以在 VSCode 输出面板的Python 语言服务器一项中查看。
{
// 设置 Pylance 仅汇报错误
"python.analysis.logLevel": "Error",
}
设置 VSCode Pylance 扩展在修复命令中的行为
Pylance
扩展的设置项python.analysis.fixAll
是一个字符串数组(其默认值为[]
),数组中的每一个项对应一种行为,这些行为决定了Pylance
扩展在Fix All
命令被执行时的表现,以下是python.analysis.fixAll
数组的有效取值。
- source.unusedImports 行为
source.unusedImports
行为将移除已在 VSCode 打开的 Python 代码文件中的一些导入语句,因为这些语句导入的模块未被使用。- source.convertImportFormat 行为
source.convertImportFormat
行为将根据设置项python.analysis.importFormat
来转换已在 VSCode 打开的 Python 代码文件中的导入语句。
什么是 VSCode 的 Fix All 命令?
Fix All
命令用于尝试修复所有的代码问题,可通过在 VSCode 命令面板输入Fix All
执行。
{
// 设置在运行 Fix All 命令时的行为
"python.analysis.fixAll": [
"source.unusedImports",
"source.convertImportFormat"
],
}
设置运行 VSCode Pylance 扩展的 Node.js 可执行文件路径
Pylance
扩展的设置项python.analysis.nodeExecutable
用于指示一个外部 Node.js 可执行文件,Pylance
将通过此外部 Node.js 运行,默认值为空字符串。而一般情况下,Pylance
使用 VSCode 自身的 Node.js,其内存会受到 VSCode 的限制,如果你希望获得更多内存空间,那么设置python.analysis.nodeExecutable
设置项是可行的。
python.analysis.nodeExecutable
设置项的取值不限于 Node.js 可执行文件的路径,他还可以是某个指向 Node.js 的别名,但无论如何,你应该确保该取值能够在命令行中正确启动 Node.js。
不支持在 VSCode 工作区设置中使用扩展 Pylance 的 python.analysis.nodeExecutable 设置项
Pylance
扩展的python.analysis.nodeExecutable
设置项,不支持在 VSCode 工作区设置中使用,即.vscode
文件夹中的settings.json
文件。设置python.analysis.nodeExecutable
设置项需要在 VSCode 用户设置或远程设置中进行。
{
// 指向外部 Node.js(无法在 VSCode 工作区设置中使用)
"python.analysis.nodeExecutable": "node",
}
自定义 VSCode Pylance 扩展的 Python 语法高亮样式
通过editor.semanticTokenColorCustomizations
设置项,你可以针对 VSCode 的某个主题或所有主题,自定义Pylance
扩展的 Python 语法高亮样式,当然,主要是指颜色。以下是Pylance
扩展所支持的,可用于自定义 Python 语法高亮样式的具体语义类型(Semantic Token Type)和语义修饰符(Semantic Token Modifier),在实际使用时,项的名称应添加后缀:python
,以限制其仅对 Python 语言生效,并将所有的项放置在rules
设置项中。
语义类型包括但不限于,class
,enum
,parameter
,variable
,property
,enumMember
,function
,member
,module
,intrinsic
,magicFunction
,selfParameter
,clsParameter
。语义修饰符包括但不限于,declaration
,readonly
,static
,abstract
,async
,typeHint
,typeHintComment
,decorator
,builtin
。
如何在 VSCode 中查看 Python 代码所属的语义类型和语义修饰符?
如果你不清楚某个 Python 代码元素所属的语义类型和语义修饰符,那么可以在 VSCode 命令面板中输入命令Developer: Inspect Editor Tokens and Scopes
来启动范围检查器,然后点击需要查看的代码元素,面板中将显示其语义类型,语义修饰符,以及其他相关信息。
{
// 为所有主题自定义 Python 语法高亮
"editor.semanticTokenColorCustomizations": {
"rules": {
// 指定类的颜色
"class:python": "#da9797",
// 指定声明的颜色,比如,类和函数的定义
"*.declaration:python": "#82cb7a"
}
}
}