I am writing a python interface to a c++ library and am wondering about the correct design of the library.
I have found out (the hard way) that all methods passed to python must be declared static. If I understand correctly, this means that all functions basically must be defined in the same .cpp file. My interface has many functions, so this gets ugly very quickly.
What is the standard way to deal with this problem? Possibilities I could think of:

don't worry about it and use one looong .cpp file
compile into more than one library (.so file)
write a .cpp for each group of functions and #include that .cpp into the body of the main defining cpp file (the one with the PyMethodDef)

both of them seem very ugly
Why do you  say that all functions called by Python have to be
static?  It's usual for that to be the case, in order to avoid
name conflicts (since any namespace, etc. will be ignored
because of the extern "C"), but whether the function is static
or not is of no consequence.  
When interfacing a library in C++, in my experience, it's
generally not a big problem to make it static, and to put all of
the functions in a single translation unit, because the
functions will be just small wrappers which call the actual C++,
and normally, will be automatically generated from some sort of
descripter file; you surely aren't going to write all of the
necessary boilerplate by hand.
What is the pythonic structure of the code of a python-c++ interface with many functions?