【问题标题】:Sympy's autowrap with cython and Matrix generates fatal error: 'numpy/arrayobject.h' file not foundSympy 使用 cython 和 Matrix 自动换行会产生致命错误:找不到“numpy/arrayobject.h”文件
【发布时间】:2015-12-14 08:13:19
【问题描述】:

我正在尝试执行 Sympy 的自动包装模块中的简单示例,该模块包括带有 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 上,使用适用于 python 2.7、sympy 0.7.6.1 和 cython 0.23.2 的 anaconda 发行版。

我收到以下(已知)错误:致命错误:找不到'numpy/arrayobject.h'文件

这似乎是一个系统错误,需要按照here的建议在cython编译过程附带的设置文件中包含适当的numpy头目标。

如何在 autowrap 上下文中摆脱这个问题? 看来这是一个已修复的错误here,但它对我不起作用......这个错误修复是否包含在 sympy 的发布 0.7.6.1 中? 有什么想法吗?

【问题讨论】:

  • 你使用的是 SymPy 的开发版吗?

标签: cython sympy


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2016-12-31
    • 1970-01-01
    • 2013-01-17
    • 2021-02-14
    • 2017-12-06
    • 2016-11-24
    • 2021-08-07
    • 1970-01-01
    相关资源
    最近更新 更多