Cython cimport和__init __。pyx越野车?

时间:2011-08-13 10:35:02

标签: import cython

似乎编译包含__init__.pyx语句的cimport是错误的。

这是我的文件夹结构:

DrawAPI\
    __init__.pyx
    utils.pxd

__init__.pyx

cimport utils

使用cython编译__init__.pyx使我无法找到utils.pxd。但是将__init__.pyx重命名为任何其他名称,例如foo.pyx

DrawAPI\
    foo.pyx
    utils.pxd

然后编译foo.pyx就可以了。

我做错了吗?

1 个答案:

答案 0 :(得分:6)

如果目录包含__init__.py__init__.pyx文件,则假定它是一个包目录。因此,在您的示例中,假设utils模块属于包DrawAPI,其FQMN为DrawAPI.utils

但是,如果DrawAPI是您正在运行编译器的当前目录,并且您尚未将DrawAPI添加到包含路径,则找不到utils.pxd(如您所发现的那样) ...)

如果您打算将utils作为顶级模块,则必须将其移动到没有__init__.pyx文件的其他地方。

如果您打算将其驻留在包中,则cd到包含DrawAPI的目录并从那里进行编译。