Jak zbudować rozszerzenie Python C, abym mógł go zaimportować z modułu

Mam projekt Pythona z wieloma podmodułami, które pakuję z distutils. Chciałbym zbudować kilka rozszerzeń Pythona w C, aby żyć w niektórych z tych podmodułów, ale nie rozumiem, jak uzyskać rozszerzenie Pythona, aby mogło żyć w podmodule. Poniżej znajduje się najprostszy przykład tego, czego szukam:

Oto moje rozszerzenie Pythonac_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);
}

A tu jestsetup.py to działa:

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

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

Po zainstalowaniu w virtualenv mogę to zrobić:

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

Ale chciałbym miećc_extension powiedzmy, żyć w podmodulefoo.bar. Co muszę zmienić w tym potoku, aby móc zachowywać się w powłoce Pythona tak:

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

questionAnswers(1)

yourAnswerToTheQuestion