Extensions on Linux: import without underscore?

Robert Kern rkern at ucsd.edu
Sun Jun 19 01:21:27 EDT 2005


James Carroll wrote:
> Thanks Robert.
> 
>>Call it bright.so .
> 
> If I rename it bright.so, then I get the error:
>   ImportError: dynamic module does not define init function (initbright)

Sorry, I should have been clearer. Just renaming the file won't help. 
The init function also needs to be appropriately named.

> I'm using swig with the module declaration
>   %module bright
> 
> I've looked at some other source, and it looks like there are some
> good reasons to have a bright.py that passes calls on to _bright.

Reread the SWIG documentation. If it is going to prepend an underscore 
to the extension name, it is usually also generating the appropriate 
bright.py . I suspect that this is why it "worked" on Windows but didn't 
work when you moved to Linux.

>>If at all possible, you should use distutils to build Python extensions.
> 
>  Where can I find similar distutils C++ examples?  Can it do most of
> what Scons does?

Even better, it will handle running SWIG, too. wxPython itself is an 
example, and one that you most certainly should emulate.

>>If you must use Scons, read
>>
>>   http://www.scons.org/cgi-bin/wiki/PythonExtensions
> 
> Very nice, strange that didn't show up for all my googles of scons
> python, etc.  I like how it uses distutils to get flags...  I'm
> extending wxPython, so I'm using the wxWidgets 
> env.ParseConfig('wx-config --cppflags --libs')   Technique... I'll
> have to ponder using one or the other or both.  Hmm....

If you're extending wxPython, cannibalize wxPython's build procedure. 
Any other way, there madness lies.

-- 
Robert Kern
rkern at ucsd.edu

"In the fields of hell where the grass grows high
  Are the graves of dreams allowed to die."
   -- Richard Harter




More information about the Python-list mailing list