要将Python解释器嵌入到应用程序中,找到传递给编译器(和链接器)的正确标志并不一定是件小事,特别是因为Python需要加载作为C动态扩展(dynamic extensions, C dynamic extensions)实现的库模块。因此啊,你必须正确地找到动态扩展库文件.so 或者.o 文件吧。
- 查找到编译链接的环境
直接运行 pythonx.y-config 命令即可。例如本系统是 python3.7,所以运行的是 python3.7-config
1.1 查找编译的标志
这些都可以放到 INCLUDE 中
$python3.7-config --cflags
-I/anaconda3/include/python3.7m -I/anaconda3/include/python3.7m -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/anaconda3/include -arch x86_64 -I/anaconda3/include -arch x86_64
1.2 查找链接的标志
这个就是链接所需要的库,QT 中 pro 增加到 LIBS中
$python3.7-config --ldflags
-L/anaconda3/lib/python3.7/config-3.7m-darwin -lpython3.7m -ldl -framework CoreFoundation -Wl,-stack_size,1000000 -framework CoreFoundation
注意:
为了避免几个Python安装之间的混淆(特别是在系统Python和您自己编译的Python之间),建议使用绝对路径的pythonX.Y-config,如下所示。
2. 使用sysconfig.get_makefile_filename()查找它的位置和编译选项
在本例中,sysconfig模块是一个有用的工具,可以通过编程提取您希望组合在一起的配置值。