I think I resolved the issue which I need to import reference dlls prior to import "from Network.Common import *". Common uses many refereces from external *.dlls, once I imported all, then I can import Common dll and use correctly.
Thank you for your helps. Spark. On Fri, Apr 19, 2013 at 10:45 AM, Seungweon Park <swpar...@gmail.com> wrote: > 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