【问题标题】:Force mypy to typecheck third-party package强制 mypy 对第三方包进行类型检查
【发布时间】:2025-12-17 00:05:01
【问题描述】:

我正在使用完全类型感知的第三方包(在本例中为 jsonrpcserver,尽管此问题可能适用于其他包),甚至在其源代码中包含一个 py.typed 文件。

但是,由于打包错误,py.typed 文件未安装。

结果,mypy坚持

error: Skipping analyzing 'jsonrpcserver.response': found module but no type hints or library stubs

尽管我可以说模块确实有类型提示。有没有办法我可以强制 mypy 来分析这个包,即使它缺少py.typed?我不应该为此目的创建存根库,因为包是类型感知的。

【问题讨论】:

    标签: python mypy


    【解决方案1】:

    我不知道这样做的好方法。 this mypy github issue 中有一些关于为此目的引入标志的讨论,但还没有。

    目前不太好的方法是在运行 mypy 之前自己创建py.typed 文件(提到here)。可能作为设置测试环境或类似脚本的一部分。

    获取该文件的正确路径:

    python -c 'import jsonrpcserver; print(jsonrpcserver.__path__[0] + "/py.typed")'
    

    【讨论】:

    • 感谢您提供该问题的链接。我现在在我的 CI 脚本中使用与上面完全相同的解决方法!