我将cython模块保存为foo.pyx
,如下所示:
cdef double sum(double[:] memview):
cdef total = 0
for i in range(len(memview):
total += memview[i]
return total
然后我用!cython -a foo.pyx
编译。
我想在cython
单元格魔法中测试此函数,如下所示:
In [1]: %%cython
...: import foo
...: cimport numpy as np
...: import numpy as np
...: def get_sum():
...: cdef double[:] to_sum = np.array([1.0,2.0,3.0])
...: cdef double sum = foo.sum(to_sum)
...: return sum
但是当我尝试get_sum()
时,我得到了:
AttributeError: 'module' object has no attribute 'sum'
我在这里做错了什么?
答案 0 :(得分:1)
要使这项工作,你需要cimport cython模块。 这将需要一个相应的pxd,其中包含您希望从模块中导出的函数签名。 有关完整的工作示例,请参阅documentation的相关部分。
这假设您的文件都在同一个工作目录中。
否则,您将需要在setup.py文件中为不同模块包含传递给include_dirs
类构造函数的Extension
参数中包含pyx和pxd文件的相关文件夹的相关文件夹。< / p>