[capi-sig] Getting System error with PyModule_AddIntConstant funtion

MathanK switch2mathan at gmail.com
Wed May 19 09:00:37 CEST 2010

Following is a Python3.1 C api which runs properly without PyModule_AddIntConstant function. 

But when PyModule_AddIntConstant() function is used, getting the following error when i call 
c. path("test call");
" SystemError: NULL result without error in PyObject_Call "

Python C api- c.c

int test(int a){
     return (2*a+a);

 PyObject* dict = NULL;

 static PyObject* path(PyObject* self, PyObject* args) {
     char *cpath;
     PyUnicodeObject *path;
     PyUnicodeObject *test; 

     if (!PyArg_ParseTuple(args, "s", &path))
        return NULL; 
     cpath = (char *)path; 
     test = (PyUnicodeObject*)(cpath); 
     PyObject *testDict = PyDict_New();
     int testVal = PyDict_SetItem(testDict, (PyObject *)PyUnicode_FromString(cpath), (PyObject *)PyUnicode_FromString(cpath));
     return Py_BuildValue("s", test);
 static PyObject* c(PyObject* self, PyObject* args) {
     int a;
     int result;
    if(!PyArg_ParseTuple(args, "i", &a))
         return NULL;
     result = test(a);
     return Py_BuildValue("i", result);

 static PyMethodDef cmethods[] = {
     {"c", c, METH_VARARGS, "watch"},
     {"path", path, METH_VARARGS, "test"},
     {NULL, NULL, 0, NULL},

 static struct PyModuleDef c_Module = {

 PyMODINIT_FUNC PyInit_c(void) {
     PyObject* obj = PyModule_Create(&c_Module);
    if (obj == NULL) 
        return NULL; 
     long lon1 = 0;
     PyModule_AddIntConstant(obj, "test", lon1);

 int main(int argc, wchar_t *argv[])
     PyImport_AppendInittab("c", PyInit_c);
     return 0;

More information about the capi-sig mailing list