【问题标题】:Difference between mypy vs mypy-lang vs pyls-mypy python packagesmypy vs mypy-lang vs pyls-mypy python包之间的区别
【发布时间】:2020-01-27 04:10:45
【问题描述】:

我正在探索 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 有任何关联?如果是,如何?

【问题讨论】:

    标签: python visual-studio-code pylint mypy


    【解决方案1】:

    我想知道 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

    其中哪一个用于启用类型检查器(或所有 3 个都需要)?

    类型检查只需要 mypy 包。

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

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

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

    这些包是否与 python-language-server 相关?如果是,如何?

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

    【讨论】:

    • 这个答案似乎是 IDE 中类型提示概述的一个很好的起点。但是由于问题提到了 vscode 和“pyhon-language-server”,我认为所指的是Microsofts Python Language Server。详细说明适合的位置会有所帮助。
    猜你喜欢
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 2022-01-10
    • 2021-06-29
    • 1970-01-01
    • 2022-06-14
    相关资源
    最近更新 更多