My guess here would be that Script is the DLL name but it doesn't include a namespace named Script. One fairly common issue is that AddReference add's references to the assembly, but import imports types and namespaces from the loaded assemblies. So if the type doesn't have a namespace you should just import TypeName, and if it's in a namespace then you should import Namespace.
Respond back if that's not the problem. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Slide Sent: Monday, December 17, 2007 12:38 PM To: Discussion of IronPython Subject: Re: [IronPython] IP 2.0 Hosting On Dec 17, 2007 9:48 AM, Dino Viehland <[EMAIL PROTECTED]> wrote: > Yes, the document is not yet up to date - we're currently working on > implementing it so the next release will probably have some of it, and > subsequence releases will have the whole thing. > > For giving objects to C# code you need to derive from the interface (and > implement the methods). If you fail to implement any methods we'll throw at > runtime when that method is called. > > For exposing classes/namespaces/etc... I think we may have a deficiency here > even in the new model. While we do have a global namespace per ScriptRuntime > I don't believe we have a way to say "populate this with these > types/namespaces". I'll bring this up next time we're going over the spec > internally. > > Here's some simple code you can give a shot to get started. I don't have > anything comprehensive, this is just what I pulled from EngineTest.cs which > if you get the IronPython source code is in IronPythonTest. I imagine > whatever Toni can post will be more useful :). > > using IronPython.Runtime.Hosting; > using Microsoft.Scripting; > ... > > PythonEngine pe = PythonEngine.CurrentEngine; > > pe.Execute(script); # where script is a string w/ some code in it. This runs > in the DefaultModule which is: > > IScriptModule default_module = > ScriptDomainManager.CurrentManager.Host.DefaultModule; > > You can also do: > > pe.Execute("x = 1", anonymousModule); > > You can create new modules via: > > ScriptModule publishedModule = pe.CreateModule("published_context_test", > ModuleOptions.PublishModule); > > Can you give some quick examples of how to import modules from C#? I am having issues with import exceptions when I try to do things. The path to the module is definitely within the sys.path, but I get all sorts of errors. Here is a snippet of my code: _script_engine.AddToPath(Path.GetDirectoryName(_scriptPath)); _script_engine.AddToPath(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)); _script_engine.AddToPath(Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "Lib")); foreach (string assembly in _assemblies) _script_engine.SystemState.ClrModule.AddReferenceByPartialName(Path.GetFileNameWithoutExtension(assembly)); foreach (KeyValuePair<string, object> obj in _objects) __main__.SetVariable(obj.Key, obj.Value); _script_engine.SystemState.prefix = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); _script_engine.Execute("import ScriptHelper"); _script_engine.Execute(string.Format("import {0} as Config", Path.GetFileNameWithoutExtension(_scriptPath))); ScriptHelper.py is just a set of simple python functions for grabbing information about loaded modules, etc. It resides in the current working directory (same as the EntryAssembly.Location). My problem comes from something inside the script (which is written to a temp file by the UI in my simple test app) importing something (which has been added using the ClrModule.AddReferenceByPartialName). I get a 'Script' is not defined (with Script being a DLL in the working directory which has been added as a reference). THanks _______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com _______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
