Python/Cython:使用Cython与SciPy

8
Cython教程中有一个很好的例子展示如何在Cython中使用Numpy。然而,我有一些使用scipy.stats包的代码,在尝试编译时出现了以下错误:
dvi.pyx:7:8: 'scipy.stats.pxd' not found

我担心scipy不支持Cython(?)。 有人可以就在Cython中使用scipy发表评论,或者指引我一些资源/教程的方向吗?谢谢!

2个回答

8
我在Cython谷歌小组上找到了这段代码(https://groups.google.com/forum/?fromgroups#!searchin/cython-users/using$20scipy/cython-users/CF9GqYN1aPU/WKC-N9c6zpgJ)。代码显示以下导入:
import pylab as PL
from scipy import integrate
from scipy import optimize
from scipy.integrate import odeint

import numpy as np
cimport numpy as np
cimport cython

这让我相信我能够使用SciPy进行编译。当添加cimport cython语句时,我收到了以下编译错误:

dvi.c:237:31: error: numpy/arrayobject.h: No such file or directory
dvi.c:238:31: error: numpy/ufuncobject.h: No such file or directory

看起来好像存在路径或目录问题。实际上,我是正确的,并且这个网站上有一篇文章(My Cython code parses into C, but doesn't compile. First time trying to use external C code)。

解决方案是将以下内容添加到我的setup.py文件中:

import numpy 
...
Extension(..., include_dirs = [numpy.get_include(), ... ] )

W00t!


我在setup.py中添加了Extension(include_dirs=[numpy.get_include()]),但是出现了“未定义的Extension”错误。还需要做更多的事情吗? - Chris

2

编写

import scipy.stats

cimport scipy.stats

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接