2012-07-27 114 views
4

Cython教程展示瞭如何在Cython中使用Numpy的一個很好的例子。不過,我有一個使用scipy.stats包代碼,並試圖編譯代碼時,我的錯誤,如:(?)Python/Cython:在Cython中使用SciPy

dvi.pyx:7:8: 'scipy.stats.pxd' not found 

我擔心SciPy的是不支持用Cython。有人可以評論Cython的scipy使用情況,還是指向某些資源/教程的方向? Thannks!

回答

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!

+0

我接着說:擴展(include_dirs = [numpy.get_include()])'來的setup.py和虛無縹緲......說'Extension'是未定義。你需要做更多嗎? – bordeo 2016-04-03 02:37:32

+0

nvm。找到了。 http://docs.cython.org/src/reference/compilation.html – bordeo 2016-04-03 02:42:45

1

import scipy.stats 

cimport scipy.stats