【问题标题】:How to generate .pyi files for a compiled Python extension?如何为已编译的 Python 扩展生成 .pyi 文件?
【发布时间】:2018-12-06 00:48:51
【问题描述】:

我使用 C++ 和 pybind11 构建了一个已编译的 Python 扩展(.pyd 文件)。我想为我的 .pyd 文件生成一个 Python 接口 .pyi 文件。

关于mypy stubgen 模块有一些类似的问题,但是,这个会产生一个UnicodeError 试图运行stubgen Dummy 其中DummyDummy.pyd 文件:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x90 in position 2: invalid start byte

另一个项目,make-stub-files 根本不适用于 .pyd 文件,导致出现 ('not a python file' 错误。

是否有任何工具可以让我从源 .cpp 文件或编译的 .pyd 文件生成 .pyi 文件?

问题已在mypy GitHub repository 中注册。

【问题讨论】:

  • 请随时向 mypy 错误跟踪器报告 stubgen 问题。此外,目前还没有办法从 C 源代码生成存根,但我计划在下个月左右开发一个。
  • @ethanhs,感谢您的评论。我已经提交了一个问题。
  • @AlexTereshenkov 的后代,你能在答案中链接到这个问题吗?
  • @ethanhs,完成!

标签: python mypy python-extensions typeshed


【解决方案1】:

issue was registered in the mypy GitHub source repository 并固定在 pull request 中。

问题的原因是,当mypy 试图确定给定模块是否是 Python 扩展时,它检查了 Linux 上使用的 .so 文件扩展名,但没有检查 .pyd 文件在 Windows 上使用的扩展。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 2023-03-11
    相关资源
    最近更新 更多