How to declare python ints in C extensions?

Saju Pillai saju.pillai at
Sun Jan 4 19:38:05 CET 2009

Tony Houghton wrote:
> I want to write python wrappers for the Linux DVB API. The underlying
> structures and constants may change from time to time, and some of the
> constants are generated from macros, so I think it would be better to
> write the module in C rather than just copying the constants into pure
> python code and using python's ioctl and struct modules.
> The trouble is I can't find out how to define a simple python int
> variable/constant in a C extension. The docs only seem to tell you how
> to define functions/methods and new types.
> For example, where the kernel header dvb/frontend.h defines:
> typedef enum fe_type {
> 	FE_QAM,
> } fe_type_t;
> I want to make them available as if there was a python module
> dvb/ containing:
> FE_QPSK = 0
> FE_QAM = 1
> FE_OFDM = 2
> FE_ATSC = 3
> but in real life the module would be dvb/frontendmodule.c.

Create Python Int objects for each of these constants and set them into 
your module object's dictionary

foo = PyInt_FromLong(1L);
PyDict_SetItemString(PyModule_GetDict(your_module), "foo", foo);


More information about the Python-list mailing list