如何配置 PythonAnalyzer 以查找标准库类型?
How to configure PythonAnalyzer to look for standard library typings?
我正在使用以下代码创建 PythonAnalyzer:
var interpreterFactory = InterpreterFactoryCreator.CreateAnalysisInterpreterFactory(
PythonLanguageVersion.V36.ToVersion());
var analyzer = PythonAnalyzer.Create(interpreterFactory);
稍后我还创建并分析了一个简单的 python 模块,它看起来像这样:
name = input('What is your name?\n')
print('Hi, %s.' % name)
那我就module.Analysis.GetValuesByIndex("name", 4)
.
此时我预计 "value" 是 'str',因为当我打开其中的同一个文件时,Visual Studio 就是这样显示的。但是,我得到的是 'object' 。因此,按照上述方式构建的 PythonAnalyzer 似乎缺少一些关于在哪里寻找标准库 and/or 其类型的重要信息。
不幸的是,缺少 PythonAnalyzer 的文档,所以我希望社区可以帮助了解如何正确配置它。
恭喜你取得了这么大的成就:)
您在这里看到的是 CreateAnalysisInterpreterFactory
实际上是为 "pure" 案例设计的,您可以访问所有您正在尝试分析的代码,而无需执行任何操作被查到。它主要用于单元测试,或者在没有安装 Python 副本时作为后备。根据您使用的 PTVS 的确切版本,您获得的基本信息要么来自 DefaultDB\v3\python.pyi
要么来自 CompletionDB\__builtin__.idb
,这两者都有些缺失(按设计)。
假设您安装了 Python 的副本,我建议创建一个包含所有详细信息的 InterpreterConfiguration
的实例,并将其传递给 CreateInterpreterFactory
(没有 "Analysis").
如果您使用的是最新资源(强烈推荐),这可能 运行 解释器在后台从中收集信息(您可以使用 DatabasePath
控制此信息的缓存以及 InterpreterFactoryCreationOptions
的 UseExistingCache
名成员)。如果您仍在使用旧版本,则需要触发完成数据库重新生成或拥有通过 VS 创建的数据库重新生成。
最后一个警告:在撰写本文时,PTVS 的这一部分目前正处于相当繁重的开发阶段,因此您要么希望继续更新您正在使用的版本,要么坚持使用稍旧的版本。也可以在 GitHub 网站上随意 post 提出这样的问题,因为虽然这在技术上是 public API,但几乎没有记录在案,因此最好的帮助将来自开发团队。
我正在使用以下代码创建 PythonAnalyzer:
var interpreterFactory = InterpreterFactoryCreator.CreateAnalysisInterpreterFactory(
PythonLanguageVersion.V36.ToVersion());
var analyzer = PythonAnalyzer.Create(interpreterFactory);
稍后我还创建并分析了一个简单的 python 模块,它看起来像这样:
name = input('What is your name?\n')
print('Hi, %s.' % name)
那我就module.Analysis.GetValuesByIndex("name", 4)
.
此时我预计 "value" 是 'str',因为当我打开其中的同一个文件时,Visual Studio 就是这样显示的。但是,我得到的是 'object' 。因此,按照上述方式构建的 PythonAnalyzer 似乎缺少一些关于在哪里寻找标准库 and/or 其类型的重要信息。
不幸的是,缺少 PythonAnalyzer 的文档,所以我希望社区可以帮助了解如何正确配置它。
恭喜你取得了这么大的成就:)
您在这里看到的是 CreateAnalysisInterpreterFactory
实际上是为 "pure" 案例设计的,您可以访问所有您正在尝试分析的代码,而无需执行任何操作被查到。它主要用于单元测试,或者在没有安装 Python 副本时作为后备。根据您使用的 PTVS 的确切版本,您获得的基本信息要么来自 DefaultDB\v3\python.pyi
要么来自 CompletionDB\__builtin__.idb
,这两者都有些缺失(按设计)。
假设您安装了 Python 的副本,我建议创建一个包含所有详细信息的 InterpreterConfiguration
的实例,并将其传递给 CreateInterpreterFactory
(没有 "Analysis").
如果您使用的是最新资源(强烈推荐),这可能 运行 解释器在后台从中收集信息(您可以使用 DatabasePath
控制此信息的缓存以及 InterpreterFactoryCreationOptions
的 UseExistingCache
名成员)。如果您仍在使用旧版本,则需要触发完成数据库重新生成或拥有通过 VS 创建的数据库重新生成。
最后一个警告:在撰写本文时,PTVS 的这一部分目前正处于相当繁重的开发阶段,因此您要么希望继续更新您正在使用的版本,要么坚持使用稍旧的版本。也可以在 GitHub 网站上随意 post 提出这样的问题,因为虽然这在技术上是 public API,但几乎没有记录在案,因此最好的帮助将来自开发团队。