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

Stephen McInerney spmcinerney at hotmail.com
Tue Dec 30 05:20:01 CET 2008

The "which wrapper to use?" design question was in fact one of the topics
of Damian Eads' paper at this year's SciPy 2008: 
"First Time Experiences Using SciPy for Computer Vision Research"

Not saying the paper was the definitive word on this subject, but 
I thought it was a good paper and an interesting and topical application
area (satellite image analysis for nuclear non-proliferation) and a
SciPy newbie case study.

I suggested we should invite Damian to present at BayPIGgies sometime,
any comments?

In fact, many folks have experience on this question, it would make a great
topic for a presentation by multiple users sharing their viewpoints for different
domains (I haven't done this stuff so I can't comment myself;
The consensus answer as far as I can see seems to depend largely
on how robust and stable the wrapperized code is, how much type-safety
you need, exception-handling, how much control or visibility you have over
the underlying source etc...)


> From: nar at hush.com
> To: baypiggies at python.org
> Date: Mon, 29 Dec 2008 12:23:43 -0800
> Subject: [Baypiggies] Opinions on Pyrex vs. ctypes vs. SWIG and whatever	else binds to dynamic/shared libs
> 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

It’s the same Hotmail®. If by “same” you mean up to 70% faster.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/baypiggies/attachments/20081229/79bb50e1/attachment-0001.htm>

More information about the Baypiggies mailing list