在ipython中使用Cython包装C ++标准库

时间:2015-12-03 08:03:26

标签: python c++ cython

根据Cython文档,我编写以下cython代码如下:

In [1]:%load_ext Cython
In [2]: %%cython --annotate
         from libcpp.vector cimport vector
​         cdef vector[int] *vec_int = new vector[int](10)

编译后,ipython产生了以下错误:

Error compiling Cython file:
------------------------------------------------------------ 
... 
from libcpp.vector cimport vector 
cdef vector[int] *vec_int = new vector[int](10) 
                               ^ 
------------------------------------------------------------
/Users/m/.ipython/cython/_cython_magic_a72abb419ccf1b31db9a1851b522a4bf.pyx:3:32: Operation only allowed in c++

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:2)

您需要通过特别评论告诉cython您正在撰写C++而不是C

# distutils: language = c++

%%cython --annotate阻止后添加此功能将解决您的问题。

答案 1 :(得分:1)

作为{romeric答案的替代方法,documentation for ipython Cython magic建议使用

%%cython --cplus

打开C ++模式。也可以通过在IPython控制台中运行%%cython?来访问命令的帮助。

我个人认为使用distutils注释方法要说很多话,因为它将语言与需要它的代码链接在一起。