程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

为不可导入的 C 模块生成 pyi 存根文件

发布于2024-11-26 22:16     阅读(190)     评论(0)     点赞(23)     收藏(3)


A我有一个使用特殊包的A.B,它们都是使用 Boost 用 C 编写的第三方和第四方包。由于有一些特殊设置,A.B因此不作为子模块包含,而只是作为某些变量包含。和import A.B也都首先失败import A,然后import A.B 出现ModuleNotFoundError

只有以下两种方式可以访问B。

# OK
import A
A.B # -> <module: B>

# OK
from A import B
B # -> <module: B>

# ModuleNotFoundError
import A.B

B再次是一个嵌套包,例如B.x.y.z, B.a.b, ...


我想为 创建存根文件A.B,但是pyright --createstubmypystubgen依赖于import A.B因此失败。

存在一个有用的答案来编写一个简单的解析器,但是由于我必须处理属性、重载、交叉导入,因此扩展它感觉就像重新发明轮子,并且许多情况下需要自定义处理。

我假设 mypy 的stubgen --inspect-mode代码可以修改或与调试器一起使用来直接提供模块,而不是尝试导入它然后使用它。

这就是我被困住的地方。如何修改stubgen或使用任何其他存根生成器来使其与这样的模块一起工作?


编辑:进一步说明:

导入AB所有子模块都以递归方式添加到其中,sys.modules 无需任何点路径import A; import B,如果按该顺序执行,则ie可以工作。


解决方案


暂无回答



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/2046116/4f45ebbb5955b2778963/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

23 0
收藏该文
已收藏

评论内容:(最多支持255个字符)