我试图从Sympy的autowrap模块中执行简单示例,该模块包含带有Cython语言的矩阵/矢量产品(因为我没有安装gfortran):
import sympy.utilities.autowrap as aw
from sympy.utilities.autowrap import autowrap
from sympy import symbols, IndexedBase, Idx, Eq
A, x, y = map(IndexedBase, ['A', 'x', 'y'])
m, n = symbols('m n', integer=True)
i = Idx('i', m)
j = Idx('j', n)
instruction = Eq(y[i], A[i, j]*x[j])
matvec = autowrap(instruction, language='C',backend='cython')
我在OSX 10.9.4上,使用anaconda for python 2.7,sympy 0.7.6.1和cython 0.23.2。
我收到以下(已知)错误:致命错误:' numpy / arrayobject.h'找不到文件
这似乎是一个系统错误,需要在附加到cython编译过程的安装文件中包含适当的numpy标头目标,如建议here。
如何在 autowrap 上下文中解决此问题? 这似乎是一个修复了here的错误,但它对我不起作用...这个错误修复是否包含在sympy的重新发布0.7.6.1中? 有什么想法吗?
答案 0 :(得分:1)
这是一个错误,现在已修复。请参阅此拉取请求:
https://github.com/sympy/sympy/pull/8848
如果您使用SymPy的开发版本,它应该可以使用。否则,您可以使用autowrap将文件吐出到临时目录,将正确的include语句添加到生成的文件中,然后手动编译代码。