python - mypy vs mypy-lang vs pyls-mypy python包之间的区别

标签 python visual-studio-code pylint mypy

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

我可以,

pip install mypy

pip install mypy-lang

pip install pyls-mypy

以上三部作品。但是,

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

最佳答案

I would like to know the difference between mypy, mypy-lang and pyls-mypy packages?

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

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

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

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

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

language server protocol ”是一种越来越受欢迎的协议(protocol),它试图使向 IDE 添加更好的编程语言工具变得更加容易。

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

之所以安装 pyls-mypy “正常工作”,可能是因为它声明了 mypy as a dependency .

Which of these is used for enabling the Type-Checker (or all the 3 are needed)?

类型检查只需要 mypy 包。

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

例如,如果您想直接在 PyCharm 中使用 mypy,则需要 install a mypy/Pycharm plugin .

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

Are these packages in any way related to the python-language-server ? If yes, how ?

pyls-mypy 显然是 Palantir 的 python-language-server 项目的插件/构建于其之上。查看project readme和他们的 requirements.txt 文件。

关于python - mypy vs mypy-lang vs pyls-mypy python包之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59925045/

相关文章:

python - PyLint:尝试解包非序列

使用pylint的python代码约定

python - python中的多项式样本生成

python - 未能实现卡尔达诺方法。复数的立方根

visual-studio-code - 如何在 VS Code 上禁用蓝色通知徽章?

visual-studio-code - 如何恢复 Visual Studio Code 中的垃圾桶图标?

macos - -bash : pylint: command not found

python - 在 NumPy 数组上使用 += 的意外结果

javascript - AJAX 无法正确解析 url

ubuntu - Visual Studio Code 如何从终端复制彩色语法