mypy、mypy-lang 和 pyls-mypy python 包之间的区别

Mag*_*der 4 python pylint visual-studio-code mypy

我正在探索 Python 的静态类型检查器,并在设置 Visual Studio Code 时遇到了不同的包。我已经安装了python-language-serverlinting 和格式化。我遇到了可执行mypy.exe文件mypyls.exe

我可以做,

pip install mypy

pip install mypy-lang

pip install pyls-mypy

以上三部皆作品。但,

  1. 我想知道mypymypy-langpyls-mypy包之间的区别?
  2. 其中哪一个用于启用类型检查器(或者需要全部 3 个)?
  3. 这些包是否与 相关python-language-server?如果是,怎么办?

Mic*_*x2a 8

我想知道 mypy、mypy-lang 和 pyls-mypy 软件包之间的区别?

mypy包包含 mypy 类型检查器,它执行所有实际代码分析、类型推断和类型检查。

mypy-lang软件包已被弃用。如果您安装它/尝试使用它,我相信它所做的只是告诉您应该安装该mypy软件包(尽管我不确定这个注释实际上有多明显)。

基本上,事实证明,当 mypy 第一次创建时,有人已经在 pypi 上为一个不相关的项目抢占了“mypy”名称,因此 mypy 开发人员决定使用“mypy-lang”。

但经过几年/几次尝试联系“mypy”包的所有者失败后,很明显该包已被放弃,因此所有权已转移给 mypy 开发人员。

pyls-mypy包是一个独立的项目,基本上实现了一个理解类型提示的Python语言服务器。

语言服务器协议”是一种日益流行的协议,它试图让向 IDE 中添加更好的编程语言工具变得更加容易。

这个想法是,如果你拥有一种编程语言或一些 linter,你不想为 N 个不同的编辑器编写 N 个不同的插件。相反,您只需实现此协议一次,然后任何支持 LSP 的 IDE 和编辑器都会自动理解您的工具。

安装 pyls-mypy “正常工作”的原因可能是因为它将mypy 声明为依赖项

其中哪一个用于启用类型检查器(或者需要全部 3 个)?

类型检查只需要 mypy 包。

但是,mypy 本身只能从命令行调用。如果您想将其与其他编辑器或 IDE 集成,则需要安装一些额外的工具。

例如,如果您想直接在 PyCharm 中使用 mypy,则需要安装 mypy/Pycharm 插件

另一个例子,如果你想从某个支持 LSP 的编辑器中使用 mypy,你需要安装像 pyls-mypy 这样的东西。

这些包与 python-language-server 有什么关系吗?如果是,怎么办?

pyls-mypy 显然是 Palantir 的 python-language-server 项目的插件/构建于其之上。请参阅项目自述文件及其requirements.txt 文件。