__init__.so(而不是 __init__.py)屏蔽子包

tjm*_*tjm 5 python module package cython python-3.x

我正在 cython 中编写一些代码,并且我有一些"Packages \xe2\x80\x9cwithin\xe2\x80\x9d module"。—这实际上是我的问题的后续,结构应该是相同的。问题是这是 cython,所以我正在处理的.so是而不是.py

\n\n

工作达到__init__.so这样的程度,

\n\n
import mystuff\n
Run Code Online (Sandbox Code Playgroud)\n\n

会起作用,但它似乎掩盖了下面的所有子包。那是,

\n\n
import mystuff.test.test1\n
Run Code Online (Sandbox Code Playgroud)\n\n

将不会。我收到一个ImportError: No module named ...错误。

\n\n

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

\n\n
\n\n

更新:未为包__path__定义属性....so

\n\n

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

\n

Eth*_*man 2

让您的 Cython 代码位于与 不同的文件中__init__.py,并将其导入到普通的 python 中__init__.py 请参阅我对上一个问题的回答。