Интерпретатор Python может быть встроен в программу на C с использованием C API. Это лучше всего демонстрирует уже работающий пример:
/* File : demo.c */ /* Пример встраивания интерпретатора Python в другую программу */ #include "Python.h"
main(int argc, char **argv) { /* Передает argv[0] интерпретатору Python */ Py_SetProgramName(argv[0]);
/* Инициализация интерпретатора */ Py_Initialize();
/* ... */
/* Выполнение операторов Python (как бы модуль __main__) */ PyRun_SimpleString("import time\n"); PyRun_SimpleString("print time.localtime(time.time())\n");
/* ... */
/* Завершение работы интерпретатора */ Py_Finalize(); }
Компиляция этого примера с помощью компилятора gcc может быть выполнена, например, так:
ver="2.3" gcc -fpic demo.c -DHAVE_CONFIG_H -lm -lpython${ver} \ -lpthread -lutil -ldl \ -I/usr/local/include/python${ver} \ -L/usr/local/lib/python${ver}/config \ -Wl,-E \ -o demo
Здесь следует отметить следующие моменты:
Здесь же следует сделать еще одно замечание: программа, встраивающая Python, не должна много раз выполнять Py_Initialize() и Py_Finalize(), так как это может приводить к утечке памяти. Сам же интерпретатор Python очень стабилен и в большинстве случаев не дает утечек памяти.