在Jupyter iPython中运行Cython

rrg*_*rrg 6 python cython anaconda jupyter-notebook

使用Cython接口为时间试验运行迭代循环以获得几何级数.

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

%load_ext Cython
Run Code Online (Sandbox Code Playgroud)

%%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
Run Code Online (Sandbox Code Playgroud)

错误:

//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
Run Code Online (Sandbox Code Playgroud)

ksi*_*ndi 6

我能够使用 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
Run Code Online (Sandbox Code Playgroud)

例子:

geo_prog_cython(0.5, 5)
1.96875
Run Code Online (Sandbox Code Playgroud)

代码看起来不错。应该是你的设置有问题。


Con*_*ems 6

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

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

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

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

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

[build]
compiler=msvc

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

乌班图:apt-get install python-devel