我正在研究Python的静态类型检查器,并在设置Visual Studio代码时遇到了不同的软件包。我已经安装了python-language-server
以便整理和格式化。我遇到了mypy.exe
和mypyls.exe
可执行文件。
我可以,
pip install mypy
pip install mypy-lang
pip install pyls-mypy
以上所有三部作品。但是,
mypy
,mypy-lang
和pyls-mypy
软件包之间的区别?python-language-server
有什么关系吗?如果是,怎么办?我想知道mypy,mypy-lang和pyls-mypy包之间的区别?
mypy
程序包包含mypy类型检查器,该检查器执行所有实际的代码分析,类型推断和类型检查。
mypy-lang
软件包已弃用。如果您安装它/尝试使用它,我相信它所要做的就是告诉您应该安装mypy
软件包(尽管我不确定此注释的实际可见性)。
[基本上,事实证明,当首次创建mypy时,已经有人在pypi上获取了一个无关项目的“ mypy”名称,因此mypy开发人员改为使用“ mypy-lang”。
但是经过几年/几次尝试联系“ mypy”软件包所有者的失败之后,很明显该软件包已被放弃,因此所有权被转移给了mypy开发者。
pyls-mypy
包是一个独立的项目,基本上实现了可理解类型提示的Python语言服务器。
“ [language server protocol”是一种稳定增长的协议,它试图使为IDE编程语言添加更好的工具变得更加容易。
的想法是,如果您拥有一种编程语言或一些linter,则不想为N个不同的编辑器编写N个不同的插件。相反,您只需实施一次此协议,然后任何支持LSP的IDE和编辑器都会自动了解您的工具。
安装pyls-mypy的“方法”有效的原因可能是因为它声明了mypy as a dependency。
其中哪一个用于启用类型检查器(或全部三个)?
仅需要mypy软件包才能进行类型检查。
但是,mypy本身只能从命令行调用。如果要将其与其他编辑器或IDE集成,则需要安装一些额外的工具。
例如,如果您想直接在PyCharm中使用mypy,则需要install a mypy/Pycharm plugin。
作为另一个示例,如果要从支持LSP的编辑器中使用mypy,则需要安装诸如pyls-mypy之类的东西。
这些软件包是否与python-language-server有关?如果是,怎么办?
pyls-mypy显然是在Palantir的python-language-server项目之上的for / builds插件。请参阅project readme及其requirements.txt文件。