[IronPython] Call Python function from C#...

Seshadri Pillailokam Vijayaraghavan seshapv at microsoft.com
Sat Jun 28 10:21:49 PDT 2008


Here's another simple code snippet that'd let you do the same...

using System;
using Microsoft.Scripting.Hosting;
using System.Scripting;


namespace ConsoleApplication1 {
    class Program {

        public static void Main(string[] args) {
            ScriptEngine pyEng = ScriptRuntime.Create().GetEngine("py");
            string testSrc = @"
class FooClass:
     'A simple test class'
     def f(self):return 'Hello World'

fooTest = FooClass()
def bar(): return fooTest.f();";

            // load script with bar() function def
            ScriptSource source = pyEng.CreateScriptSourceFromString(testSrc, SourceCodeKind.Statements);
            // Create scope
            ScriptScope scope = pyEng.CreateScope();

            source.Execute(scope);

            object fooTest = scope.GetVariable("fooTest");
            Func<string> sayHello = pyEng.Operations.GetMember<Func<string>>(fooTest, "f");

            // Now call fooTest's object member function 'f'
            string result = sayHello();
        }
    }
}


From: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of Dody Gunawinata
Sent: Saturday, June 28, 2008 7:05 AM
To: Discussion of IronPython
Subject: Re: [IronPython] Call Python function from C#...

Hi Bob,

This blog post shall answer all your questions http://spellcoder.com/blogs/dodyg/archive/2008/04/15/12273.aspx

Dody G.
On Fri, Jun 27, 2008 at 5:51 PM, Bob Rosembob <brosembob at yahoo.com<mailto:brosembob at yahoo.com>> wrote:
Hi there,

I apologize if this is a duplicate message. I sent this message last night but don't see it posted. Perhaps I did something wrong and message got lost.

I need to call Python function from C# to get a value. When I call the script it executes and calculates some value, then I need to call some function to get the result. How do I do that? I have the following snippet of code that seems to execute the script, but I don't know and can't find on line, how to call a function and get value back.

I added references to my project to the following dlls:
- IronPython.dlll
- IronMath.dll

In the code I'm using the following:

using
IronPython.Runtime;

using
IronPython.Runtime.Types;

using
IronPython.Runtime.Operations;

using
IronPython.Hosting;

using
IronPython.Modules;



Here is the code:


PythonEngine engine = new PythonEngine();
EngineModule module = engine.CreateModule("Test", true);
try

{

    engine.ExecuteFile(
@"Test\Test.py", module);

}
catch (Exception ex)

{
    Console.WriteLine("Failed to execute Test.py<http://test.py/> file");
    return;

}



//call the function????



So how do I do the call to the function?



Thanks for your help.

Bob





_______________________________________________
Users mailing list
Users at lists.ironpython.com<mailto:Users at lists.ironpython.com>
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com



--
nomadlife.org<http://nomadlife.org>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ironpython.com/pipermail/users-ironpython.com/attachments/20080628/2e6cb112/attachment-0001.htm>


More information about the Users mailing list