El compilador no puede encontrar Py_InitModule () ... ¿está en desuso y, de ser así, qué debo usar?

Estoy intentando escribir una extensión C para python. Con el código (a continuación) recibo la advertencia del compilador:

implicit declaration of function ‘Py_InitModule’

Y falla en tiempo de ejecución con este error:

undefined symbol: Py_InitModule

He pasado literalmente horas buscando una solución sin alegría. He intentado varios cambios menores en la sintaxis, incluso encontré una publicación que sugiere que el método ha quedado en desuso. Sin embargo no encuentro reemplazo.

Aquí está el 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");
}

Si ayuda aquí está mi 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])

Y el código de prueba en test.py:

import cModPyDem

if __name__ == '__main__' :

    print(cModPyDem.fib(200))

Cualquier ayuda sería muy, muy apreciada.

Respuestas a la pregunta(2)

Su respuesta a la pregunta