在Jupyter iPython中运行Cython

时间:2016-02-26 16:14:50

标签: python anaconda cython jupyter-notebook

使用Cython界面为时间试验运行迭代循环以获得几何级数。

编译时出错(shift-enter):CompileError:command' gcc'退出状态1失败

%load_ext Cython
  

%%cython
def geo_prog_cython(double alpha, int n):
    cdef double current = 1.0
    cdef double sum = current
    cdef int i
    for i in range(n):
        current = current * alpha
        sum = sum + current
    return sum

错误:

//anaconda/lib/python3.5/distutils/command/build_ext.py in build_extension(self, ext)
    530                                          debug=self.debug,
    531                                          extra_postargs=extra_args,
--> 532                                          depends=ext.depends)
    533 
    534         # XXX outdated variable, kept here in case third-part code

2 个答案:

答案 0 :(得分:3)

我能够使用Anaconda3无错误地重现这一点:

%load_ext Cython
%%cython -a

def geo_prog_cython(double alpha, int n):
    cdef double current = 1.0
    cdef double sum = current
    cdef int i
    for i in range(n):
        current = current * alpha
        sum = sum + current
    return sum

示例:

geo_prog_cython(0.5, 5)
1.96875

代码似乎很好。这一定是您设置的问题。

答案 1 :(得分:3)

我知道这个问题已经很老了,但我认为这可能有助于其他人。

我在Windows上遇到了一个旧的Py2.7项目的问题。

如果在Windows上,并使用Py2.7检查您是否安装了用于Python的MS Visual Studio C ++编译器(download link)。不确定Py3需要做哪些更改。

对于您的anaconda环境,找到Lib\distutils目录并创建一个distutils.cfg文件(如果尚未存在,否则只需根据需要修改当前文件)。

您希望构建配置如下所示。

[build]
compiler=msvc

如果在Linux上,请确保您有可用的devel个软件包,例如

Ubuntu:apt-get install python-devel