Python by the C side
paypal-engineering.com
paypal-engineering.com
My experience using both for the project has lead me to characterize ctypes as something for Python developers wanting to interact with C, and cffi as something for C developers wanting to use their code from Python. ctypes plays nicer with the Python GC. cffi is oriented towards C terminology/semantics, and (even knowing from the beginning that weak refs must be held) was far easier to crash by accidental use-after-free.
And yeah, in spite/because of all its simplisticness, ctypes really does seem to win out among those who share Python's aesthetics.
I think one of the biggest benefits of ctypes is that it is part of the stdlib. Not requiring a compiler means it opens up a whole swath of users who aren't Python developers, but have Python installed. Part of the reason I'm interested in this is being heavily involved in the Sublime Text community, where every user has Python and ctypes, but requiring a C compiler and Python headers eliminates probably 99% of users.
Trying to distribute pre-compiled shared libraries was a path I went down, but gave up on. Having to compile 10 versions of the cryptography package every time a new release came around was a disaster. If you chance upon the cryptography-dev IRC channel, you'll see it is a part time job to get the package compiled reliably, and they have dedicated hardware provided by Rackspace to help them.
For calling C functions cffi or ctypes is usually easier and incurs less overhead, but for rich C++ interfaces there is just no alternative to using a binding generator, as the required code becomes large very fast.