python – __init__.so(而不是__init__.py)掩盖了子包

我在cython中编写了一些代码,我有一些“Packages “within” modules”. – 这实际上是我的问题的后续跟进,结构应该是一样的.问题是这是cython,所以我正在处理.so不是.py的.

__init__.so工作到了这个程度,

import mystuff

会工作,但它似乎掩盖了下面的所有子包.那是,

import mystuff.test.test1

将不会.我得到一个ImportError:没有名为…的模块错误.

我该如何解决这个问题?在将它编译为.c之前,我是否需要添加到.pyx中?或者也许我可以将__init__.so重命名为其他内容,并以某种方式将其拉入__init__.py(注意,__ init__.py仍然需要与.so一起存在以显示它是一个包)?或者是其他东西.

更新:没有为.so包定义__path__属性…

好吧,我想到也许我可以通过操纵包的__path__属性来解决这个问题.有趣的是,这是针对.py软件包定义的,但会导致.so的错误.这不是解决方案,但我想知道它是否是问题的根源.

最佳答案
让您的Cython代码与__init__.py位于不同的文件中,并将其导入普通的python __init__.py请参阅我之前问题的答案.

转载注明原文:python – __init__.so(而不是__init__.py)掩盖了子包 - 代码日志