网站项目团队介绍,婚纱礼服外贸网站,wordpress防黑客插件,免费化工网站建设实现 Python UDF 中的一步就是学习如何在 C 语言中调用 python 解析器。本文根据 Python 官方文档做了一次实验#xff0c;记录如下#xff1a;
1. 安装依赖包
$sudo yum install python3-devel.x86_642. 使用 python-config 来生成编译选项
$python3.6-config --cflags -…实现 Python UDF 中的一步就是学习如何在 C 语言中调用 python 解析器。本文根据 Python 官方文档做了一次实验记录如下
1. 安装依赖包
$sudo yum install python3-devel.x86_642. 使用 python-config 来生成编译选项
$python3.6-config --cflags --ldflags
-I/usr/include/python3.6m -I/usr/include/python3.6m -Wno-unused-result -Wsign-compare -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE2 -fexceptions -fstack-protector-strong --paramssp-buffer-size4 -grecord-gcc-switches -m64 -mtunegeneric -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE2 -fexceptions -fstack-protector-strong --paramssp-buffer-size4 -grecord-gcc-switches -m64 -mtunegeneric -D_GNU_SOURCE -fPIC -fwrapv-L/usr/lib64 -lpython3.6m -lpthread -ldl -lutil -lm -Xlinker -export-dynamic3. 编写 Makefile
将第二步生成的编译、链接选项填到 Makefile 中得到 Makefile 如下
all:g -I/usr/include/python3.6m -I/usr/include/python3.6m -Wno-unused-result -Wsign-compare -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE2 -fexceptions -fstack-protector-strong --paramssp-buffer-size4 -grecord-gcc-switches -m64 -mtunegeneric -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE2 -fexceptions -fstack-protector-strong --paramssp-buffer-size4 -grecord-gcc-switches -m64 -mtunegeneric -D_GNU_SOURCE -fPIC -fwrapv -L/usr/lib64 -lpython3.6m -lpthread -ldl -lutil -lm -Xlinker -export-dynamic main.cpp4. 编写 main.cpp
#define PY_SSIZE_T_CLEAN
#include Python.hint
main(int argc, char *argv[])
{wchar_t *program Py_DecodeLocale(argv[0], NULL);if (program NULL) {fprintf(stderr, Fatal error: cannot decode argv[0]\n);exit(1);}Py_SetProgramName(program); /* optional but recommended */Py_Initialize();PyRun_SimpleString(from time import time,ctime\nprint(Today is, ctime(time()))\n);if (Py_FinalizeEx() 0) {exit(120);}PyMem_RawFree(program);return 0;
}5. 编译
$make
g -I/usr/include/python3.6m -I/usr/include/python3.6m -Wno-unused-result -Wsign-compare -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE2 -fexceptions -fstack-protector-strong --paramssp-buffer-size4 -grecord-gcc-switches -m64 -mtunegeneric -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE2 -fexceptions -fstack-protector-strong --paramssp-buffer-size4 -grecord-gcc-switches -m64 -mtunegeneric -D_GNU_SOURCE -fPIC -fwrapv -L/usr/lib64 -lpython3.6m -lpthread -ldl -lutil -lm -Xlinker -export-dynamic main.cpp6. 执行
$./a.out
Today is Wed Mar 1 14:23:13 2023后继章节预告
如何在脚本片段中使用第三方库如何传参到 Python 脚本如何处理 Python 脚本的返回值并发调用 Python 解析器效率讨论
参考文献
Embedding python in Chttps://docs.python.org/3/extending/embedding.html