[IronPython] Access to current Python engine in C# (Silverlight)
Michael Foord
fuzzyman at voidspace.org.uk
Thu May 28 21:14:09 CEST 2009
Ping?
Jimmy - had a chance to look at this yet? I'd really like to know if it
is a bug or just something I'm doing wrong / not doing.
Thanks
Michael
Michael Foord wrote:
> Ha - dammit, no.
>
> With Silverlight this still throws an ImportError when embedded Python
> code executed from C# like this tries to import from the xap file. :-(
>
> Michael
>
> Michael Foord wrote:
>> Thanks to some help from William Reade, this code *seems* to work
>> fine. I need to try it from Silverlight and check the Python code it
>> contains is able to import:
>>
>> using System;
>> using System.Collections.Generic;
>> using System.Text;
>>
>>
>> using IronPython.Hosting;
>> using IronPython.Runtime;
>> using IronPython.Runtime.Types;
>>
>> using Microsoft.Scripting;
>> using Microsoft.Scripting.Hosting;
>> using Microsoft.Scripting.Runtime;
>>
>>
>> namespace ExecutePython
>> {
>> public class ExecutePython
>> {
>> static string code = @"
>> class Foo(object):
>> attribute = 'weeeee'
>>
>> ";
>> public static Scope CreateModule(CodeContext context)
>> {
>> PythonContext python = PythonContext.GetContext(context);
>>
>> PythonDictionary globals = new PythonDictionary();
>> globals["__name__"] = "AModule";
>> Scope module = new Scope(globals);
>> SourceUnit script = python.CreateSnippet(code,
>> SourceCodeKind.Statements);
>> script.Execute(module);
>> return module;
>> }
>> }
>> }
>>
>>
>> All the best,
>>
>>
>> Michael
>>
>>
>> Michael Foord wrote:
>>> Jimmy - did you get a chance to look at this?
>>>
>>> If the code shown below *genuinely* gets a reference to the current
>>> engine then shouldn't the search path be setup already?
>>>
>>> Can you see what is wrong with the code below?
>>>
>>> Thanks
>>>
>>> Michael
>>>
>>> Michael Foord wrote:
>>>> Hello guys,
>>>>
>>>> I have a second use case for embedding IronPython in Silverlight.
>>>> This is actually a dynamic application with a C# component that
>>>> needs to programattically build a Python module.
>>>>
>>>> Again I have the same problem - imports in Python code fail. I
>>>> would have expected that accessing the current runtime and fetching
>>>> a Python engine would fetch the current Python engine, with the
>>>> browser host correctly setup. Unfortunately that seems not to be
>>>> the case. Can anyone spot problems with the following code:
>>>>
>>>>
>>>> using Microsoft.Scripting.Silverlight;
>>>> using IronPython;
>>>> using IronPython.Hosting;
>>>> using Microsoft.Scripting;
>>>> using Microsoft.Scripting.Hosting;
>>>>
>>>> namespace EmbeddedSLModule
>>>> {
>>>> public class EmbeddedSLModule
>>>> {
>>>> private static string source = @"
>>>> import something
>>>> ";
>>>> public static ScriptScope GetModule(){
>>>> ScriptRuntime runtime = DynamicApplication.Current.Runtime;
>>>> ScriptEngine engine = runtime.GetEngine("Python");
>>>> ScriptScope scope = engine.CreateScope();
>>>> ScriptSource script =
>>>> engine.CreateScriptSourceFromString(source,
>>>> SourceCodeKind.Statements);
>>>> script.Execute(scope);
>>>>
>>>> return scope;
>>>>
>>>> }
>>>> }
>>>> }
>>>>
>>>>
>>>> It works fine for code that doesn't import anything - but imports
>>>> from within the xap file fail.
>>>>
>>>> Thanks
>>>>
>>>> Michael Foord
>>>>
>>>
>>>
>>
>>
>
>
--
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog
More information about the Ironpython-users
mailing list