我可以在Cython pxd文件中使用cimport吗?

时间:2019-03-11 01:55:31

标签: cython

我想在Cython函数中使用uint_fast16_t类型。通过在文件顶部添加from libc.stdint cimport uint_fast16_t,可以在pxd文件中访问它吗?我已经搜索了Cython文档,却找不到在pxd文件中使用cimport的任何提示。

1 个答案:

答案 0 :(得分:0)

是的。似乎在pxd文件顶部添加了cimport行确实有效。这是我用来演示的一个小测试用例:

test.pxd:

from libc.stdint cimport uint_fast16_t

cdef uint_fast16_t double_it(uint_fast16_t x)

test.pyx:

# cython: language_level=3, boundscheck=False, wraparound=False, cdivision=True
from test cimport double_it, uint_fast16_t

cdef uint_fast16_t double_it(uint_fast16_t x):
    return 2*x

def fast_double(uint_fast16_t x):
    return double_it(x)

cythonize-3.7 -i test.pyx && python之后的结果

>>> import test
>>> test.fast_double(10)
20

我放在test.pyx顶部的编译器指令是从我的主项目文件中复制的。我将其放在此处只是为了确保它可以使用与我已经使用的相同的设置进行工作。我认为没有必要在cimport文件中使用.pxd