Arquivo gphoto2py_module.c
#include <Python.h>
static PyObject *
spam(PyObject *self, PyObject *args)
{
char *hello = "Hello World\n";
return Py_BuildValue("s", hello);
}
static PyObject *SpamError;
static PyMethodDef GPhoto2pyMethods[] = {
{"spam", spam, METH_VARARGS, "spam docs?"},
{NULL, NULL, 0, NULL} /* Sentinel */
};
PyMODINIT_FUNC
initGPhoto2py(void)
{
PyObject *m;
m = Py_InitModule("GPhoto2py", GPhoto2pyMethods);
if (m == NULL)
return;
SpamError = PyErr_NewException("GPhoto2py.error", NULL, NULL);
Py_INCREF(SpamError);
PyModule_AddObject(m, "error", SpamError);
}
int
main(int argc, char *argv[])
{
/* Pass argv[0] to the Python interpreter */
Py_SetProgramName(argv[0]);
/* Initialize the Python interpreter. Required. */
Py_Initialize();
/* Add a static module */
initGPhoto2py();
return 0;
}
Arquivo setup.py
from distutils.core import setup, Extension
module1 = Extension('GPhoto2py',
sources = ['gphoto2py_module.c'])
setup (name = 'GPhoto2py',
version = '0.1',
description = 'This is a demo package',
ext_modules = [module1])
Para gerar o módulo
$ python setup.py build
Para testar:
$ cd build/lib*
$ ls
GPhoto2py.so
$ python
Python 2.5.4 (r254:67916, Feb 18 2009, 03:00:47)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import GPhoto2py
>>> GPhoto2py.spam()
'Hello World\n'
>>>
Simples assim!
Fontes:
http://docs.python.org/extending/building.html#building
http://docs.python.org/extending/extending.html
PS.: O nome do arquivo é "GPhoto2py" porque o objetivo é, mais à frente, user o GPhoto2 no Python (o bind do projeto não é atualizado desde 2007)
Nenhum comentário:
Postar um comentário