[Python.NET] getting started - can't import a simple dll

Laszlo Sebo laszlo.sebo at primefocusworld.com
Wed Dec 15 03:06:16 CET 2010


When you import the assembly it will be referenced by the assembly name 
defined in the project settings (which is what the dll will be named 
as). GAC isn't required ( i never do that ).

I just did a quick test here. Made an empty Class project via Visual 
Studio 2008.

Then tweaked the source to add 2 functions:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ClassLibrary1
{
     public class Class1
     {
         public string Function1()
         {
             return "Test Function Called";
         }
         public void Function2()
         {
             Console.WriteLine("Hello World");
         }
     }
}

I built it with all default settings (as a class library), then copied 
the dll to the python / lib / site-packages folder, along with the 
clr.pyd, Python.Runtime.dll and Python.Runtime.dll.config files

Then from python:

Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel
win32
Type "help", "copyright", "credits" or "license" for more information.
 >>> import clr
 >>> clr.AddReference('ClassLibrary1')
<System.Reflection.Assembly object at 0x01DF5580>
 >>> import ClassLibrary1
 >>> myObject = ClassLibrary1.Class1()
 >>> myObject.Function1()
u'Test Function Called'
 >>> myObject.Function2()
Hello World
 >>>

Note that the "import ClassLibrary1" is the namespace not the assembly 
(it just happens to be the same since its all default values).
I wonder if your issue is somehow related to VS2010? Could it be adding 
some default references? What references are listed in VS?


cheers,
laszlo



On 14/12/2010 5:47 PM, Jason Awbrey wrote:
> Thanks.  I tried creating a test assembly with just a default 
> constructor and no other dependencies, and I get the same error when I 
> try to import it.
>
> I also tried setting the path variable, through windows as well as in 
> code, and get the same result.
>
> Assuming my dll is named "TestLib.dll", I should be able to do 
> clr.AddReference("TestLib"), correct?
>
> Do I have to strong name my assemblies, or put them in the GAC?  Or is 
> that optional?
>
> Any other suggestions of how to track this down?



More information about the PythonDotNet mailing list