IronPython script with Sympy

本文关键字:Sympy with script IronPython | 更新日期: 2023-09-27 17:50:37

现在我得到错误:应用程序中的服务器错误。描述:当前web请求执行过程中发生了未处理的异常。请查看堆栈跟踪以获得有关错误及其在代码中的起源位置的更多信息。异常详细信息:IronPython.Runtime.Exceptions.ImportException: Cannot import name typed来源错误:第44行:expr));第45行:第46行:script.Execute(scope);第48行:返回scope.GetVariable("result");

public static string PythonEvaluate(string expr) 
{ 
    var engine = Python.CreateEngine(); var paths = engine.GetSearchPaths();
    paths.Add(@"C:'Python27'Lib'Site-Packages");
    paths.Add(@"C:'sympy");
    engine.SetSearchPaths(paths);
    var scope = engine.CreateScope();
    var script = engine.CreateScriptSourceFromString(string.Format(@"
                import sys
                sys.platform = "win32"  // Default is cli
                from sympy import *
                n = Symbol('n')
                value = {0}
                import clr
                from System import String
                result = clr.Convert(value , String)",
            expr));
    script.Execute(scope);  
    return scope.GetVariable("result");
}
protected void Page_Load(object sender, EventArgs e)
{
    var result = PythonEvaluate("limit((1 + 3/n)**n, n, oo)");
    Label3.Text = result;
}

IronPython script with Sympy

我不熟悉在。net中执行Python代码,但在Python中每个缩进都有意义。我猜你需要删除所有前导空格的代码:

    // ...
    var script = engine.CreateScriptSourceFromString(string.Format(@"
from sympy import *
value = {0}
import clr
from System import String
result = clr.Convert(value , String)", expr));
    script.Execute(scope);

正如我在评论中指出的那样,不可能告诉你出了什么问题,你没有告诉我们错误是什么,但有可能是你使用limit不正确。你需要传递给它一个符号对象,而不是一个lambda函数,它有三个参数,无限被调用,oo,而不是inf

n = Symbol("n")
limit((1 + 3/n)**n, n, oo)