似乎编译包含__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
就可以了。
我做错了吗?
答案 0 :(得分:6)
如果目录包含__init__.py
或__init__.pyx
文件,则假定它是一个包目录。因此,在您的示例中,假设utils模块属于包DrawAPI
,其FQMN为DrawAPI.utils
但是,如果DrawAPI
是您正在运行编译器的当前目录,并且您尚未将DrawAPI添加到包含路径,则找不到utils.pxd
(如您所发现的那样) ...)
如果您打算将utils作为顶级模块,则必须将其移动到没有__init__.pyx
文件的其他地方。
如果您打算将其驻留在包中,则cd到包含DrawAPI
的目录并从那里进行编译。