Cython:从pxd头

时间:2015-05-20 11:01:17

标签: python cython

我想知道如果可能的话,如果没有在头文件中声明变量,如何将一个变量从一个cython模块导入另一个cython模块。

假设我有一个(预编译且不可更改的)库及其cython头文件pxd。

lib.pyx

cdef double VAR1 = 1.0
cdef double VAR2 = 2.0

lib.pxd

cdef double VAR1

现在我想从另一个cython文件访问VAR2。这可能吗?访问VAR1工作正常:

app.pyx(1)

from lib cimport VAR1
print VAR1

结果

1.0

但尝试以同样方式导入VAR2失败:

app.pyx(2)

from lib cimport VAR1, VAR2
print VAR1, VAR2

结果

CYTHON: app.pyx:1:0: 'VAR2.pxd' not found
CYTHON: app.pyx:1:23: Name 'VAR2' not declared in module 'lib'

我认为将VAR2声明为外部可能有效,但似乎并非如此:

app.pyx(3)

from lib cimport VAR1
cdef extern double VAR2
print VAR1, VAR2

结果

PYTHON: ImportError: ./app.so: undefined symbol: VAR2

它似乎接受了定义,但没有看到符号。如果这样的导入是完全可能的,任何想法,如果是的话,如何实现它?我已经尝试了

的所有组合
import lib
cimport lib
from lib import *
from lib cimport *

0 个答案:

没有答案