我正在用cython编写一些代码,我有一些"Packages “within” modules"。 - 这实际上是我的问题的后续跟进,结构应该是相同的。问题是这是cython,所以我处理.so
不是.py
。
__init__.so
工作的程度,
import mystuff
会起作用,但它似乎掩盖了下面的所有子包。也就是说,
import mystuff.test.test1
不会。我收到ImportError: No module named ...
错误。
我该如何解决这个问题?在将其编译为.pyx
之前,是否需要添加到.c
?或者也许我可以将__init__.so
重命名为其他内容,并以某种方式将其添加到__init__.py
(注意,__init__.py
仍然需要与.so
一起存在以显示它是一个包)?或者别的什么。
更新__path__
属性未定义.so
个包...
好吧,我有一个想法,也许我可以通过操纵包的__path__
属性来解决这个问题。有趣的是,这是为.py
包定义的,但导致.so
的错误。这不是一个解决方案,但我想知道它是否是问题的根源。
答案 0 :(得分:2)
让您的Cython代码与__init__.py
不同,并将其导入普通的python __init__.py
请参阅我之前问题的答案。
答案 1 :(得分:2)
对于给定问题,最简单的解决方案可能是将__init__.so
模块重命名为_native.so
。之后,您可以创建包含以下行的__init__.py
:
from _native import *
它应该像你描述的那样工作。