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

Slide slide.o.mix at gmail.com
Thu Apr 5 12:24:41 EDT 2018


It would require some additional features be implemented in .NET core to
support it.

On Thu, Apr 5, 2018 at 9:23 AM Josiah Kiehl <jkiehl at riotgames.com> wrote:

> Got it. Thanks for the answers. I'll hang on to this work for future when
> compile module works in .net core. Is that an eventual plan?
>
> On Thu, Apr 5, 2018, 6:45 AM Stéphane Lozier <stephane.lozier at gmail.com>
> wrote:
>
>> It sounds like you were already doing what I was suggesting trying. The
>> "full framework" version is what you get when you install using the MSI.
>> The zip file in releases link contains the .NET Core version of the
>> interpreter but like I said it doesn't support CompileModule.
>>
>> I think you may be out of luck on this since there's currently no way to
>> compile the code for .NET Core and the assembly generated using full .NET
>> doesn't work...
>>
>> Stéphane
>>
>> On Wed, Apr 4, 2018 at 1:38 PM, Josiah Kiehl <jkiehl at riotgames.com>
>> wrote:
>>
>>> Oh! I understand now, thanks for clarifying. Yes, that's the problem.
>>> You mentioned that there is a "full framework" version I could compile my
>>> dlls with? I poked around the releases and I wasn't sure what you were
>>> referencing, specifically.
>>>
>>> I installed via the 2.7.8 msi from here:
>>> https://github.com/IronLanguages/ironpython2/releases. Is there a
>>> release with dotnet core or can I build one?
>>>
>>> I did notice that I can't compile via running the compile script in the
>>> embedded IronPython in dotnet core, as CompileModule is not supported.
>>>
>>> Thanks so much for answering my questions, this is extremely helpful.
>>> Josiah
>>>
>>> On Wed, Apr 4, 2018, 6:16 AM Stéphane Lozier <stephane.lozier at gmail.com>
>>> wrote:
>>>
>>>> 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
>>>>>>>
>>>>>>
>>>>
>> _______________________________________________
> 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/20180405/631b2b5d/attachment.html>


More information about the Ironpython-users mailing list