从文档和示例用Cython崩溃(Cython crash from documentation ex

2019-10-19 02:31发布

我用用Cython 0.19.2(和Python 2.7.1),以暴露C ++类到Python。

作为第一次尝试,我做了一个测试用的文件的“矩形”类的例子。

http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html

我有一个崩溃,我不明白。

我试图简化代码的最大。 但我仍然有问题。

这里是我的PYX文件中,C ++源代码只是一个剪切和从Python /用Cython的文档粘贴。

# distutils: language = c++
# distutils: sources = Rectangle.cpp

cdef extern from "Rectangle.h" namespace "shapes":
  cdef cppclass Rectangle:
    pass

cdef class PyRectangle:
  cdef Rectangle* thisptr

我只是想声明一个类与thisptr,它指向了C ++的Rectangle类实例。

当我试着使用编译程序:

cython -a --cplus rect.pyx

我有以下的崩溃:

Error compiling Cython file:
------------------------------------------------------------
...
cdef extern from "Rectangle.h" namespace "shapes":
  cdef cppclass Rectangle:
    pass

cdef class PyRectangle:
  cdef Rectangle* thisptr
      ^
------------------------------------------------------------

rect.pyx:9:7: Compiler crash in AnalyseDeclarationsTransform

File 'ModuleNode.py', line 101, in analyse_declarations: ModuleNode(rect.pyx:1:0,
    full_module_name = 'rect')
File 'Nodes.py', line 382, in analyse_declarations: StatListNode(rect.pyx:4:0)
File 'Nodes.py', line 4251, in analyse_declarations: CClassDefNode(rect.pyx:8:5,
    as_name = u'PyRectangle',
    class_name = u'PyRectangle',
    module_name = u'',
    visibility = u'private')
File 'Nodes.py', line 382, in analyse_declarations: StatListNode(rect.pyx:9:7)
File 'Nodes.py', line 1208, in analyse_declarations: CVarDefNode(rect.pyx:9:7,
    modifiers = [...]/0,
    visibility = u'private')

Compiler crash traceback from this point on:
  File "/home/xxx/local/python2.7.1/site-packages/Cython/Compiler/Nodes.py", line 1208, in analyse_declarations
self.entry.doc = embed_position(self.pos, self.doc)
AttributeError: 'CVarDefNode' object has no attribute 'doc'

我曾尝试用耐热玻璃,setup.py,...一切进行编译。 但我仍然有同样的错误。

是否有什么我失踪?

谢谢

Answer 1:

好吧,我终于固定它。 我的Python 2.7.1版本根本不与最后用Cython 0.19.2工作。 我升级到了2.7.6和它的作品。



文章来源: Cython crash from documentation example