I had a similar problem in Ironclad -- needing to get the engine which called a C# method. Try adding a CodeContext parameter to GetModule (which gets automagically inserted; no need to change the call from Python), and then using PythonContext.GetContext to get a PythonContext from the CodeContext. See the constructors in http://code.google.com/p/ironclad/source/browse/trunk/src/Python25Mapper.cs

...if your goggles can stand it.

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


_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to