Cómo construir una extensión Python C para que pueda importarla desde un módulo

Tengo un proyecto de Python con muchos submódulos que empaqueté con distutils. Me gustaría construir algunas extensiones de Python en C para vivir en algunos de estos submódulos, pero no entiendo cómo hacer que la extensión de Python viva en un submódulo. Lo que sigue es el ejemplo más simple de lo que estoy buscando:

Aquí está mi extensión de Pythonc_extension.c:

#include <Python.h>

static PyObject *
get_answer(PyObject *self, PyObject *args)
{
    return Py_BuildValue("i", 42);
}

static PyMethodDef Methods[] = {
    {"get_answer",  get_answer, METH_VARARGS, "The meaning of life."},
    {NULL, NULL, 0, NULL}
};

PyMODINIT_FUNC
initc_extension(void) {
  (void) Py_InitModule("c_extension", Methods);
}

Y aquí hay unsetup.py eso funciona:

from distutils.core import setup
from distutils.extension import Extension

setup(name='c_extension_demo',
      ext_modules = [Extension('c_extension', sources = ['c_extension.c'])])

Después de instalar en un virtualenv puedo hacer esto:

>>> import c_extension
>>> c_extension.get_answer()
42

Pero me gustaría tenerc_extension vive en un submódulo, digamosfoo.bar. ¿Qué necesito cambiar en esta canalización para poder lograr que el comportamiento en el shell de Python sea así:

>>> import foo.bar.c_extension
>>> foo.bar.c_extension.get_answer()
42

Respuestas a la pregunta(1)

Su respuesta a la pregunta