在 C# 中嵌入 IronPython

本文关键字:IronPython | 更新日期: 2023-09-27 17:56:08

我只是在研究将IronPython与C#一起使用,似乎找不到任何很好的文档来满足我需要的东西。 基本上,我正在尝试将方法从.py文件调用到 C# 程序中。

我有以下内容可以打开模块:

var ipy = Python.CreateRuntime();
var test = ipy.UseFile("C:''Users''ktrg317''Desktop''Test.py");

但是,我不确定如何从这里访问那里的方法。 我看到的示例使用 dynamic 关键字,但是,在工作中我只使用 C# 3.0。

谢谢。

在 C# 中嵌入 IronPython

参见 Voidspace 站点上的嵌入。

那里的一个例子,IronPython 计算器和评估器适用于从C#程序调用的简单 Python 表达式计算器。

public string calculate(string input)
{
    try
    {
        ScriptSource source =
            engine.CreateScriptSourceFromString(input,
                SourceCodeKind.Expression);
        object result = source.Execute(scope);
        return result.ToString();
    }
    catch (Exception ex)
    {
        return "Error";
    }
}

您可以尝试使用以下代码,

ScriptSource script;
script = eng.CreateScriptSourceFromFile(path);
CompiledCode code = script.Compile();
ScriptScope scope = engine.CreateScope();
code.Execute(scope);

它来自这篇文章。

或者,如果你更喜欢调用一个方法,你可以使用这样的东西,

using (IronPython.Hosting.PythonEngine engine = new IronPython.Hosting.PythonEngine())
{
   engine.Execute(@"
   def foo(a, b):
   return a+b*2");
   // (1) Retrieve the function
   IronPython.Runtime.Calls.ICallable foo = (IronPython.Runtime.Calls.ICallable)engine.Evaluate("foo");
   // (2) Apply function
   object result = foo.Call(3, 25);
}

这个例子来自这里。