O compilador não consegue encontrar o Py_InitModule () .. está obsoleto e, em caso afirmativo, o que devo usar?

Estou tentando escrever uma extensão C para python. Com o código (abaixo), recebo o aviso do compilador:

implicit declaration of function ‘Py_InitModule’

E falha no tempo de execução com este erro:

undefined symbol: Py_InitModule

Passei literalmente horas procurando uma solução sem alegria. Eu tentei várias pequenas alterações na sintaxe, até encontrei um post sugerindo que o método foi preterido. No entanto, não encontro substituto.

Aqui está o código:

#include <Python.h>

//a func to calc fib numbers
int cFib(int n)
{
    if (n<2) return n;
    return cFib(n-1) + cFib(n-2);
}


static PyObject* fib(PyObject* self,PyObject* args)
{
    int n;
    if (!PyArg_ParseTuple(args,"i",&n)) 
        return NULL;    
    return Py_BuildValue("i",cFib(n));
}

static PyMethodDef module_methods[] = {
    {"fib",(PyCFunction) fib, METH_VARARGS,"calculates the fibonachi number"},
    {NULL,NULL,0,NULL}
};

PyMODINIT_FUNC initcModPyDem(void)
{
    Py_InitModule("cModPyDem",module_methods,"a module");
}

Se ajudar aqui é o meu setup.py:

from distutils.core import setup, Extension

module = Extension('cModPyDem', sources=['cModPyDem.c'])
setup(name = 'packagename', 
    version='1.0',
    description = 'a test package',
    ext_modules = [module])

E o código de teste em test.py:

import cModPyDem

if __name__ == '__main__' :

    print(cModPyDem.fib(200))

Qualquer ajuda seria muito, muito apreciada.

questionAnswers(2)

yourAnswerToTheQuestion