I figured it out.
It is necessary to recompile the module. I must use the header files from PyPy. For linking, I must not link against libpython. I must just tell the linker to ignore about unresolved symbols.
This where my commands to build py-leveldb on MacOSX:
cc -I /usr/local/Cellar/pypy/1.9/include -g -c leveldb_ext.cc leveldb_object.cc
libtool -dynamic -o leveldb.so leveldb_ext.o leveldb_object.o -lleveldb -lsnappy -lc -lstdc++ -undefined dynamic_lookup
That worked. I just did cpyext.load_module("leveldb.so","leveldb")
.
I also found some more notes about CPyExt in their wiki here.