I am creating C-extensions for Python3. However, I keep getting errors when trying to make a list object.
I have read the documentation and tried various ways of creating a
- https://docs.python.org/3.5/c-api/list.html
- https://docs.python.org/3.5/c-api/intro.html#reference-count-details
How do I properly create a list?
Code (Attempt 1)
PyObject *listall;
PyObject *listall = Py_BuildValue("[sss]", "pka", "pkb", "iselement");
Error (Attempt 1)
./lib/clib-src/pychemistry.c:37:21: error: initializer element is not constant
PyObject *listall = Py_BuildValue("[sss]", "pka", "pkb", "three");
Code (Attempt 2)
PyObject *list;
PyObject *list = PyList_New(3);
PyList_SetItem(list, (Py_ssize_t)0, PyUnicode_FromString("pka"));
PyList_SetItem(list, (Py_ssize_t)1, PyUnicode_FromString("pkb"));
PyList_SetItem(list, (Py_ssize_t)2, PyUnicode_FromString("iselement"));
Error (Attempt 2)
./lib/clib-src/pychemistry.c:39:18: error: initializer element is not constant
PyObject *list = PyList_New(3);
^
./lib/clib-src/pychemistry.c:40:22: error: expected ‘)’ before ‘(’ token
PyList_SetItem(list, (Py_ssize_t)0, PyUnicode_FromString("pka"));
^
./lib/clib-src/pychemistry.c:41:22: error: expected ‘)’ before ‘(’ token
PyList_SetItem(list, (Py_ssize_t)1, PyUnicode_FromString("pkb"));
^
./lib/clib-src/pychemistry.c:42:22: error: expected ‘)’ before ‘(’ token
PyList_SetItem(list, (Py_ssize_t)2, PyUnicode_FromString("iselement"));