[Baypiggies] Opinions on Pyrex vs. ctypes vs. SWIG and whatever else binds to dynamic/shared libs

Charles Merriam charles.merriam at gmail.com
Mon Dec 29 22:59:47 CET 2008

I'd love some better information as well.  My small experience appears:

- Swig tends to be used for the fully automated conversions.  Swig can
keep the APIs up to date when Python is provided as yet another API in
a dynamic, large project.
- Almost all of the systems tend to create a distinctly verbose
interface.   For example, there's usally a "Menu.create(),
Menu.addItem(), Menu.removeItem()" gui interface instead of just
making a Menu an array of MenuItems and intercepting the updates.

Have a great day!

Charles Merriam

On Mon, Dec 29, 2008 at 12:23 PM, nar <nar at hush.com> wrote:
> Hi guys,
> Long time lurker, first time poster -- I've got a question that has been
> bugging me for a while and I figured I'd roll it out here to see what
> opinions people may have.
> I've done a bit of work with Python binding to DLLs on Windows and shared
> libraries on Linux/OSX, but I've mostly taken the ctypes route using GCC-XML
> to generate wrapper code for me. It would seem that most cheese shop modules
> use Pyrex with hand coded wrappers or SWIG to half auto-gen the wrappers and
> finish off with hand fix-ups.
> Since ctypes ships with Python I kind of assumed it would be the 'default'
> way of performing this task, but most people seem to like Pyrex and a
> minority of people seem to use SWIG but hate it.
> I suspect the question is similar to asking 'Which is better, vi or emacs?',
> but I'd like to hear what other people are doing / have done and why they
> prefer it?
> For those unfamiliar with ctypes / ctypeslib here's the process:
> 0) Install gccxml
> 1) Install ctypeslib module if it's not on your system, this will put
> h2xml.py and xml2py.py on your system
> 2) h2xml.py -I/path/to/includes SomeIncludeFile.h -o SomeIncludeFile.xml
> 3) xml2py.py SomeIncludeFile.xml -o NewPythonModule.py
> There's a bit of fiddling you can do with the h2xml stuff as far as
> preprocessing, but that's roughly what it takes. You still need to hand-fix
> the generated wrapper code to make it 'pythonic' if thats your flavor, since
> it passes C-type variables in and out, but it still seems like a better
> development flow than using Pyrex/SWIG, but there may be factors I'm unaware
> of. (Which is why I'm asking here!)
> Hopefully this isn't too off topic for the list, I look forward to the
> responses,
> Thanks!
> Nathan Ramella
> nar <> @ <> hush.com
> _______________________________________________
> Baypiggies mailing list
> Baypiggies at python.org
> To change your subscription options or unsubscribe:
> http://mail.python.org/mailman/listinfo/baypiggies

More information about the Baypiggies mailing list