为什么不能在Excel + xlwings中运行扩展,因子和简化函数Sympy?

时间:2018-03-18 17:59:32

标签: python excel vba sympy xlwings

实际上我可以使用xlwings在Excel中运行Sympy脚本。     我没有限制,积分,差异,求解等方面的问题......但是我无法运行因子,扩展,简化和三角扩展。我怀疑所有这些功能都在内部链接,因为它们都给了我同样的错误:

    RecursionError: maximum recursion depth exceeded while calling a Python object 

问题仅在于因子,扩展,简化和三角函数扩展函数。

我在VBA Excel中的代码:

    Function factor(func As String)
            If TypeOf Application.Caller Is Range Then On Error GoTo failed
            factor = Py.CallUDF("pruebasympy", "factor", Array(func), ThisWorkbook, Application.Caller)
            Exit Function
    failed:
            factor = Err.Description
    End Function

我在Sympy脚本中的代码(pruebasympy.py):

    import xlwings as xw
    from sympy import *

    @xw.func
    @xw.arg('func')

    def factor(func):
        x = symbols('x')               
        return str(factor(func))

在Excel中将表达式(x ** 4)-1放入函数" = Factor()"时,错误消息为:

RecursionError: maximum recursion depth exceeded while calling a Python object 

我试着用这条线,但不能工作:

import sys
sys.setrecursionlimit(5000)

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我认为" RecursiveError"是Sympy或xlwings中的内部错误。错误是使用相同的系统函数名称和def函数。更改def函数名称可以解决问题。