[IronPython] Calling a Python function (compiled into an assembly) from C# using delegates.

Curt Hagenlocher curt at hagenlocher.org
Wed Jan 21 17:46:54 CET 2009


This is very much worth doing: generate an assembly by precompiling a Python
source file and then look at the result using Reflector.

On Wed, Jan 21, 2009 at 8:28 AM, Dody Gunawinata <empirebuilder at gmail.com>wrote:

> hmm..why would an IronPython assembly be different from a static language
> assembly? Wouldn't that negates the main point of the CLR?
>
> Dody G.
>
> On Wed, Jan 21, 2009 at 6:20 PM, Michael Foord <fuzzyman at voidspace.org.uk>wrote:
>
>> Dody Gunawinata wrote:
>>
>>> string cmd = @"from xxx import yy";
>>>
>>> eng.CreateScriptSourceFromString(cmd).Execute(--fill in default scope
>>> here--)
>>>
>> It will need to be:
>>
>> eng.CreateScriptSourceFromString(cmd,
>> SourceCodeKind.Statements).Execute(scope)
>>
>> But I'm pretty sure he will also need to use a different API for loading
>> the assembly, assuming it is  from compiled IronPython code rather than just
>> an ordinary .NET assembly.
>>
>> Michael
>>
>>
>>> //then go one fetching the function
>>>
>>> On Wed, Jan 21, 2009 at 6:11 PM, Renaud Durand <neraun at gmail.com<mailto:
>>> neraun at gmail.com>> wrote:
>>>
>>>    That is the point. I don't want to do that from a file but from an
>>>    Assembly (dll).
>>>
>>>    2009/1/21 Dino Viehland <dinov at microsoft.com
>>>    <mailto:dinov at microsoft.com>>
>>>
>>>        You need to do:
>>>
>>>
>>>        eng.ExecuteFile('myfile.py', scope);
>>>
>>>
>>>        *From:* users-bounces at lists.ironpython.com
>>>        <mailto:users-bounces at lists.ironpython.com>
>>>        [mailto:users-bounces at lists.ironpython.com
>>>        <mailto:users-bounces at lists.ironpython.com>] *On Behalf Of
>>>        *Renaud Durand
>>>        *Sent:* Wednesday, January 21, 2009 7:45 AM
>>>        *To:* dody at nomadlife.org <mailto:dody at nomadlife.org>;
>>>        Discussion of IronPython
>>>        *Subject:* Re: [IronPython] Calling a Python function
>>>        (compiled into an assembly) from C# using delegates.
>>>
>>>
>>>        Ok, but how ?
>>>
>>>        2009/1/21 Dody Gunawinata <empirebuilder at gmail.com
>>>        <mailto:empirebuilder at gmail.com>>
>>>
>>>        I think you have to import the function - loading the assembly
>>>        alone is not enough.
>>>
>>>        On Wed, Jan 21, 2009 at 5:17 PM, Renaud Durand
>>>        <renaud.durand.it <http://renaud.durand.it>@gmail.com
>>>
>>>        <http://gmail.com>> wrote:
>>>
>>>            Hi again,
>>>
>>>            I'm trying to call a python function from C#. I found out
>>>            through a tutorial how to do it from
>>>            a Python source file but I would like to do it from a
>>>            compiled assembly. Some elements are missing.
>>>            I think it is something like below but this does not work:
>>>
>>>                        eng = Python.CreateEngine()
>>>                        Assembly interpreter =
>>>            Assembly.Load("interpreter");
>>>                        eng.runtime.LoadAssembly(interpreter);
>>>                                          ScriptScope scope =
>>> eng.CreateScope();
>>>
>>>                        //Get the interpretMapping function
>>>                        Func<string, object> interpretMapping;
>>>                        interpretMapping =
>>>            scope.GetVariable<Func<string, object>>("interpretMapping");
>>>                        ObjectOperations ops = eng.Operations;
>>>
>>>                        //Get the interpItem returned by function.
>>>                        object item =
>>>
>>>  interpretMapping("649AC0165011B1E8F726AC54C911000000000000000000000000000000000000");
>>>                        //Get the display Method
>>>                        object method = ops.GetMember(item, "display");
>>>                        ops.Call(method);
>>>
>>>            Thank you... Again :-)
>>>
>>>            --            Renaud Durand
>>>            EPITA Student
>>>
>>>            _______________________________________________
>>>            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>
>>>
>>>
>>>        _______________________________________________
>>>        Users mailing list
>>>        Users at lists.ironpython.com <mailto:Users at lists.ironpython.com>
>>>        http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>
>>>
>>>
>>>
>>>        --        Renaud Durand
>>>
>>>
>>>        _______________________________________________
>>>        Users mailing list
>>>        Users at lists.ironpython.com <mailto:Users at lists.ironpython.com>
>>>        http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>
>>>
>>>
>>>
>>>    --    Renaud Durand
>>>
>>>    _______________________________________________
>>>    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>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.ironpython.com
>>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>
>>>
>>
>>
>
>
> --
> nomadlife.org
>
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20090121/2d906342/attachment.html>


More information about the Ironpython-users mailing list