[Ironpython-users] Unable to correctly resolve function in a module when using ImportModule

Jeff Hardy jdhardy at gmail.com
Wed Jan 2 20:45:57 CET 2013


It's definitely supposed to be handling dots (the code is in
Languages/IronPython/IronPython/Runtime/Importer.cs), so I'm not sure
why it would be failing in this case. Can you try it without SciPy
involved (just create a couple of nested packages with trivial Python
files)?

- Jeff

On Wed, Jan 2, 2013 at 10:55 AM, Matt Fishburn <fishburn at gmail.com> wrote:
> Hi,
>
> I would like to call some functions in the scipy.linalg package from C#,
> however I think the ImportModule function from the ScriptRuntime object is
> not working correctly for modules with dots in the name.
>
> To setup the project, I followed the instructions at
>
> https://www.enthought.com/repo/.iron/
>
> and then I created a C# console app, added references to IronPython,
> Microsoft.CSharp and Microsoft.Scripting.  When I run the code below, the
> GetVariable method of the ScriptScope object that is supposed to be
> associated with scipy.linalg appears to be resolving to the scipy namespace
> instead.  I also tried the code below with version 2.7.3 of IronPython
> downloaded from ironpython.codeplex.com, but the code failed with an
> identical result.
>
> Am I doing something wrong, or missing something obvious here?
>
> Cheers,
> Matt
>
>
> using System;
> using System.Collections.Generic;
> using IronPython.Hosting;
> using Microsoft.Scripting.Hosting;
>
> namespace IronPythonFromCSharp
> {
>     internal class Program
>     {
>         private static void Main(string[] args)
>         {
>             var options = new Dictionary<string, object>();
>             options["Frames"] = true;
>             options["FullFrames"] = true;
>
>             ScriptRuntime pyRuntime = Python.CreateRuntime(options);
>
>             dynamic sys = pyRuntime.GetSysModule();
>
>             sys.path.append(@"c:\Program Files (x86)\IronPython 2.7");
>             sys.path.append(@"c:\Program Files (x86)\IronPython 2.7\DLLs");
>             sys.path.append(@"c:\Program Files (x86)\IronPython 2.7\Lib");
>             sys.path.append(@"c:\Program Files (x86)\IronPython
> 2.7\Lib\site-packages");
>
>             dynamic clr = pyRuntime.GetClrModule();
>             clr.AddReference("mtrand.dll");
>
>             dynamic linalg = pyRuntime.ImportModule("scipy.linalg");
>             dynamic builtin = pyRuntime.GetBuiltinModule();
>             dynamic numpy = pyRuntime.ImportModule("numpy");
>
>             //getting std function (which is in scipy, not scipy.linalg)
> call will succeed
>             object std = linalg.GetVariable("std");
>
>             //can invoke std with a list
>             dynamic l = builtin.list();
>             l.append(1);
>             l.append(2);
>             l.append(3);
>             object stdDev = linalg.std(l);
>             Console.WriteLine(stdDev);     // writes out the type of stdDev
>
>             //trying to get inv, which is in scipy.linalg, will throw an
> error
>             object inv = linalg.GetVariable("inv");
>         }
>     }
> }
>
> _______________________________________________
> Ironpython-users mailing list
> Ironpython-users at python.org
> http://mail.python.org/mailman/listinfo/ironpython-users
>


More information about the Ironpython-users mailing list