[Ironpython-users] Loading python compiled with clr.CompileModule

Stéphane Lozier stephane.lozier at gmail.com
Wed Apr 4 09:16:13 EDT 2018


I assumed you were using .NET Core when you said you were using dotnet
2.0.3. So you are compiling using ipy.exe (which is a .NET 4.5 app) and
then using the assembly from a .NET Core 2.0 application? The .NET Core API
doesn't expose System.Runtime.CompilerServices.Closure so that might be the
reason things are failing...

Stéphane

On Tue, Apr 3, 2018 at 5:53 PM, Josiah Kiehl <jkiehl at riotgames.com> wrote:

> Sorry if I'm not understanding... when you say "full framework version",
> do you mean the stand alone executable, ipy.exe?
>
> I compiled the dll with ipy.exe running a simple script:
>
> > ipy compile.py
>
> # compile.py
> import clr
>
> clr.CompileModules("compiled.dll", "test.py")
>
> This works just fine.
>
> Then I tried to load "compiled.dll" via the embedded IronPython in a
> simple dotnet CLI app and it produces the above error:
>
> ScriptEngine engine = Python.CreateEngine();
> engine.Runtime.LoadAssembly(Assembly.LoadFile(@"C:\some\
> path\compiled.dll"));
> var scope = engine.Runtime.ImportModule("test");
>
> Is that what's not supported? Loading the dll in the embedded IronPython?
>
> Thanks for your help, I am super hopeful I can get this working.
> Josiah
>
> On Tue, Apr 3, 2018 at 2:39 PM Stéphane Lozier <stephane.lozier at gmail.com>
> wrote:
>
>> The .NET Core version of IronPython does not support assembly generation.
>> I haven't tried it myself, but you could probably compile the assembly
>> using the full framework version and then run it with .NET Core 2.0
>> (assuming you're not using unsupported APIs).
>>
>> Stéphane
>>
>>
>> On Tue, Apr 3, 2018, 5:16 PM Josiah Kiehl, <jkiehl at riotgames.com> wrote:
>>
>>> Oh, I'm on dotnet 2.0.3, if that's relevant information.
>>>
>>> On Tue, Apr 3, 2018 at 2:15 PM Josiah Kiehl <jkiehl at riotgames.com>
>>> wrote:
>>>
>>>> I'm trying to execute this example code:
>>>> https://stackoverflow.com/questions/32639893/call-dll-
>>>> function-from-c-sharp-ironpython
>>>>
>>>> I realize the posted question is a few years old at this point... has
>>>> something changed in how python, compiled to a DLL via clr.CompileModule,
>>>> is loaded?
>>>>
>>>> I'm getting this error when I run the code in the example at the above
>>>> link:
>>>> Unhandled Exception: System.TypeLoadException: Could not load type
>>>> 'System.Runtime.CompilerServices.Closure' from assembly 'System.Core,
>>>> Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
>>>>    at DLRCachedCode.test$1(CodeContext $globalContext, FunctionCode
>>>> $functionCode)
>>>>    at IronPython.Compiler.OnDiskScriptCode.Run()
>>>>
>>>> (full stack: https://gist.github.com/capoferro/
>>>> 5a730088582b8cd36591be510d6ca2fc)
>>>>
>>>> My ipy.exe, which did the compilation, is 2.7.8.0 and my embedded
>>>> IronPython is 2.7.8.1, though I get the same error on 2.7.8.0.
>>>>
>>>> Am I missing something obvious or is there a better example to use?
>>>>
>>>> My end goal is to be able to take a python module defined in a file
>>>> (foo.py) with some functions defined, compile it into a dll via
>>>> CompileModule, then load it directly from the dll via ImportModule to skip
>>>> the performance hit of interpreting the Python at runtime.
>>>>
>>>> Thanks!
>>>> Josiah
>>>>
>>>>
>>>> _______________________________________________
>>> Ironpython-users mailing list
>>> Ironpython-users at python.org
>>> https://mail.python.org/mailman/listinfo/ironpython-users
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20180404/fbf2ed9b/attachment.html>


More information about the Ironpython-users mailing list