[Ironpython-users] Loading python compiled with clr.CompileModule
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...
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();
> 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.
> On Tue, Apr 3, 2018 at 2:39 PM Stéphane Lozier <stephane.lozier at gmail.com>
>> 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).
>> 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>
>>>> I'm trying to execute this example code:
>>>> 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
>>>> Unhandled Exception: System.TypeLoadException: Could not load type
>>>> 'System.Runtime.CompilerServices.Closure' from assembly 'System.Core,
>>>> Version=22.214.171.124, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
>>>> at DLRCachedCode.test$1(CodeContext $globalContext, FunctionCode
>>>> at IronPython.Compiler.OnDiskScriptCode.Run()
>>>> (full stack: https://gist.github.com/capoferro/
>>>> My ipy.exe, which did the compilation, is 126.96.36.199 and my embedded
>>>> IronPython is 188.8.131.52, though I get the same error on 184.108.40.206.
>>>> 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.
>>> Ironpython-users mailing list
>>> Ironpython-users at python.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Ironpython-users