Как создать расширение Python C, чтобы я мог импортировать его из модуля

У меня есть проект Python со многими подмодулями, которые я упаковываю с помощью distutils. Я хотел бы построить некоторые расширения Python на C для использования в некоторых из этих подмодулей, но я не понимаю, как заставить расширение Python работать в подмодуле. Ниже приведен простейший пример того, что я ищу:

Вот мое расширение 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);
}

И вотsetup.py это работает:

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

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

После установки в virtualenv я могу сделать это:

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

Но я бы хотел иметьc_extension жить в подмодуле, скажемfoo.bar, Что мне нужно изменить в этом конвейере, чтобы поведение в оболочке Python было таким:

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

Ответы на вопрос(1)

Ваш ответ на вопрос