使用cython和Matrix的Sympy自动装配会产生致命错误:&nbspy / arrayobject.h'文件未找到

时间:2015-09-17 12:47:34

标签: cython sympy

我试图从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中? 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这是一个错误,现在已修复。请参阅此拉取请求:

https://github.com/sympy/sympy/pull/8848

如果您使用SymPy的开发版本,它应该可以使用。否则,您可以使用autowrap将文件吐出到临时目录,将正确的include语句添加到生成的文件中,然后手动编译代码。