[IronPython] Fail to execute "import System" on Silverlight embedded interpreter
Kay Schluehr
kay at fiber-space.de
Mon Nov 9 21:47:53 CET 2009
Hi IronPython list,
I worked along Michael Foords introductory article about embedding
IronPython in Silverlight together with his
"EmbeddingIronPythonSilverlight" project documented here:
http://www.voidspace.org.uk/ironpython/silverlight/embedding_ironpython.shtml
I added the following two lines to the source code
source = pe.CreateScriptSourceFromString("import System",
SourceCodeKind.Statements);
source.Execute(scope);
This worked all well with the given built and the shipped assemblies.
Yesterday I downloaded the DLR dlr-34133, built it and replaced the
assemblies of the "EmbeddingIronPython..." project with the latest
SilverlightDebug ones. Running the code
again I get following import error:
System.NullReferenceException wurde nicht von Benutzercode behandelt.
Message="Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
StackTrace:
bei Microsoft.Scripting.Silverlight.DynamicApplication.get_BaseUri()
bei
Microsoft.Scripting.Silverlight.DynamicApplication.MakeUri(Uri baseUri,
Uri relativeUri)
bei
Microsoft.Scripting.Silverlight.HttpVirtualFilesystem.GetFileInternal(Object
baseUri, Uri relativeUri)
bei
Microsoft.Scripting.Silverlight.BrowserVirtualFilesystem.GetFileInternal(Object
storageUnit, String relativePath)
bei
Microsoft.Scripting.Silverlight.BrowserVirtualFilesystem.GetFile(Object
storageUnit, String relativePath)
bei
Microsoft.Scripting.Silverlight.BrowserVirtualFilesystem.GetFile(String
relativePath)
bei Microsoft.Scripting.Silverlight.BrowserPAL.FileExists(String
path)
bei IronPython.Runtime.Importer.LoadModuleFromSource(CodeContext
context, String name, String path)
bei IronPython.Runtime.Importer.LoadPackageFromSource(CodeContext
context, String name, String path)
bei IronPython.Runtime.Importer.LoadFromDisk(CodeContext context,
String name, String fullName, String str)
bei IronPython.Runtime.Importer.ImportFromPathHook(CodeContext
context, String name, String fullName, List path, Func`5 defaultLoader)
bei IronPython.Runtime.Importer.ImportFromPath(CodeContext
context, String name, String fullName, List path)
bei IronPython.Runtime.Importer.ImportTopAbsolute(CodeContext
context, String name)
bei IronPython.Runtime.Importer.ImportModule(CodeContext context,
Object globals, String modName, Boolean bottom, Int32 level)
bei IronPython.Modules.Builtin.__import__(CodeContext context,
String name, Object globals, Object locals, Object fromlist, Int32 level)
InnerException:
Apparently, pre-loading assemblies in the loop
foreach (string name in new string[] { "mscorlib", "System",
"System.Windows", "System.Windows.Browser", "System.Net" })
{
runtime.LoadAssembly(runtime.Host.PlatformAdaptationLayer.LoadAssembly(name));
}
had no effect and IronPython attempts to load the 'System' module from
the disk as a Python module. The standard import
routine "import clr; clr.AddReference("System"); import System" causes
the same problem. I'm puzzled.
Regards, Kay
More information about the Ironpython-users
mailing list