Thank you for the replies. Now, I recompiled Python.Net with .Net 4.0 and get below working with simple AAA.BBB.Adapter after reading
http://stackoverflow.com/questions/14520888/clr-addreferenceexample-file-unable-to-find-assembly?rq=1 http://stackoverflow.com/questions/13259617/python-for-net-unable-to-find-assembly-error?rq=1 http://sourceforge.net/p/pythonnet/bugs/17/ http://sourceforge.net/p/pythonnet/bugs/18/ Now I have below sample code(Adapter.proj has two c# files), and experimented Class1.cs ----------- namespace AAA.BBB.CCC { public class Adapter { public string Function1() { return "AAA.BBB.CCC: Adapter Function1 Called"; } public void Function2() { Console.WriteLine("AAA.BBB.CCC: Adapter Function2"); } } public class Network { public string Function1() { return "AAA.BBB.CCC: Network Function1 called"; } public void Function2() { Console.WriteLine("AAA.BBB.CCC: Network Function2"); } } } namespace AAA.BBB { public class Adapter { public string Function1() { return "AAA.BBB: Adapter Function1 Called"; } public void Function2() { Console.WriteLine("AAA.BBB: Adapter Function2"); } } public class Network { public string Function1() { return "AAA.BBB: Network Function1 called"; } public void Function2() { Console.WriteLine("AAA.BBB: Network Function2"); } } } Class2.cs ----------- namespace AAA.CCC { public class Adapter { public string Function1() { return "AAA.CCC: Adapter Function1 Called"; } public void Function2() { Console.WriteLine("AAA.CCC: Adapter Function2"); } } } Then, I got below. It seems working great. C:\Automation\PythonNet>nPython.exe Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.path.append("c:\\automation\\pythonnet") >>> import clr >>> clr.FindAssembly("Adapter") u'Adapter.dll' >>> clr.AddReference("Adapter") <System.Reflection.RuntimeAssembly object at 0x052E5828> >>> adapter1 = Adapter() Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'Adapter' is not defined >>> from AAA.BBB.CCC import Adapter >>> from AAA.BBB.CCC import * >>> adapter1 = Adapter() >>> adapter1.Function1() u'AAA.BBB.CCC: Adapter Function1 Called' >>> adapter1.Function2() AAA.BBB.CCC: Adapter Function2 >>> network1 = Network() >>> network1.Function1() u'AAA.BBB.CCC: Network Function1 called' >>> from AAA.CCC import * >>> adapter1.Function1() u'AAA.BBB.CCC: Adapter Function1 Called' >>> adapter1 = Adapter() >>> adapter1.Function1() u'AAA.CCC: Adapter Function1 Called' >>> My questions are 1. I don't know how to specify different namespace of class when creating an instance. 2. The class that I already have has similar above layout in a project. Common project has many class files in it, and each class has different name space and class name. AddReference('Common') looks working and loaded, but can't import. >>> clr.AddReference('Common') <System.Reflection.RuntimeAssembly object at 0x052E73C8> >>> from Network import * Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named Network >>> from Network.Common import * Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named Network.Common >>> Difference is that Common project has [Serializable] and enabled "Make assembly COM-Visible" [Serializable] [Description("SimpleDictionary")] public class SimpleDictionary : ISimpleDictionary { ... } Any thoughts? Wonder if there is a way to list available class after AddReference(). Thanks, Spark. On Thu, Apr 18, 2013 at 9:14 PM, Stephen P. Lepisto <steph...@otakuworld.com > wrote: > Try this from python with pythonNet installed (the current directory is > assumed to contain Adapter.dll): > > import clr > clr.AddReference("Adapter") # Load the Adapter.dll > from AAA.BBB import Adapter # Get the Adapter class type > adapter = Adapter() # Create instance of the Adapter class > adapter.GetSpeed() # Call the method > > > > On 4/18/2013 3:42 PM, Seungweon Park wrote: > > Thank you for the reply. > > I did > > >>> import clr > >>> from System.Reflection import Assembly > >>> Assembly.LoadWithPartialName("Adapter") > <System.Reflection.RuntimeAssembly object at 0x05381148> > >>> from AAA.BBB import Adapter > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > ImportError: No module named AAA.BBB > > I don't know why I got this. :-( > Any idea? > > > > On Thu, Apr 18, 2013 at 3:07 PM, msutton <msut...@ucsd.edu> wrote: > >> What I use is: >> >> import clr >> from System.Reflection import Assembly >> Assembly.LoadWithPartialName('Demo') >> from Render import Demo >> >> where the C# code has namespace Render and public class Demo. >> >> -Manuel >> >> >> On 04/18/2013 02:45 PM, Seungweon Park wrote: >> >> Hi, >> >> I have Adapter.dll with namespace 'AAA.BBB.Adapter" written in C# which >> gives network adapter information. >> I want to call one of method GetSpeed(). I don't know How to create an >> instance in python. >> Would you give me some clue for writing the same python code like below >> powershell script using python.net >> I don't see any sample code which python creates C# class instance. >> >> >> Python >> --------------------------- >> C:\CVS\Pythonnet>npython >> Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] >> on win32 >> Type "help", "copyright", "credits" or "license" for more information. >> >>> import os,sys >> >>> >> sys.path.append("c:\\cvs\\powershelliteexample\\networktestlibrary\\iteextensions") >> >>> sys.path >> ['', 'C:\\Python27\\lib\\site-packages\\paramiko-1.10.0-py2.7.egg', >> 'C:\\CVS\\Python\\libs', 'C:\\Windows\\system32\\pyt >> hon27.zip', 'C:\\Python27\\Lib', 'C:\\Python27\\DLLs', >> 'C:\\Python27\\Lib\\lib-tk', 'C:\\CVS\\Pythonnet', 'C:\\Python27' >> , 'C:\\Python27\\lib\\site-packages', >> 'C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\', >> 'c:\\cvs\\powershelliteexam >> ple\\networktestlibrary\\iteextensions'] >> >>> import clr >> >>> clr.FindAssembly("Adapter") >> >> u'c:\\cvs\\powershelliteexample\\networktestlibrary\\iteextensions\\Adapter.dll' >> >>> clr.AddReference("Adapter") >> <System.Reflection.RuntimeAssembly object at 0x052028A0> >> >> I don't know how to create an instance of Adapter. >> >> >> Thank you, >> Spark. >> >> >> Powershell >> ---------------------------- >> PS C:\CVS\PowershellITEExample> Import-Module .\LoadAdapter.psd1 >> PS C:\CVS\PowershellITEExample> $adapter = New-object -type >> "AAA.BBB.Adapter" >> PS C:\CVS\PowershellITEExample> $ret = $adapter.GetAdapter("TestAdapter", >> "oids.xml") >> PS C:\CVS\PowershellITEExample> $ret.Passed >> True >> PS C:\CVS\PowershellITEExample> $baseAdapter = $ret.FunctionReturnValue >> PS C:\CVS\PowershellITEExample> $baseAdapter.GetSpeed() >> >> Passed : True >> Failed : False >> Errored : False >> Status : Pass >> Description : Speed retrieved successfully. >> FunctionReturnValue : auto >> >> >> _________________________________________________ >> Python.NET mailing list - >> PythonDotNet@python.orghttp://mail.python.org/mailman/listinfo/pythondotnet >> >> >> > > > _________________________________________________ > Python.NET mailing list - > PythonDotNet@python.orghttp://mail.python.org/mailman/listinfo/pythondotnet > > > -- > Stephen P. Lepisto > > > _________________________________________________ > Python.NET mailing list - PythonDotNet@python.org > http://mail.python.org/mailman/listinfo/pythondotnet >
_________________________________________________ Python.NET mailing list - PythonDotNet@python.org http://mail.python.org/mailman/listinfo/pythondotnet