macOS下如何正确引入Python.h开发Python C扩展?
解决macOS编译Python C扩展的链接错误问题
不需要单独下载python-dev源码,macOS上的Python已经自带完整的开发文件,你遇到的是链接阶段未关联Python库的问题,并非头文件缺失。
正确的编译方式
推荐使用Python自带的python3-config工具自动获取编译和链接参数,避免手动指定路径出错:
gcc test.c $(python3-config --cflags --ldflags) -o test
--cflags:自动输出编译所需的头文件路径、宏定义等参数--ldflags:自动输出链接所需的库路径、依赖库等参数,能直接解决_PyObject_Size未定义的链接错误
手动指定路径的方法(不推荐)
如果一定要手动指定路径,除了头文件路径,还需要添加库链接参数:
gcc test.c -I /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/Headers/ -L /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/ -lpython3.9 -o test
-L:指定Python库文件的路径-lpython3.9:链接对应版本的Python库
关于Python开发文件的说明
- 系统自带的Python(CommandLineTools中的版本):头文件和库文件都在你指定的
Python3.framework目录下,无需额外安装 - 若使用Homebrew安装的Python:开发文件会在
/usr/local/Cellar/python/[对应版本号]/Frameworks/Python.framework目录下,同样无需单独下载源码包
内容的提问来源于stack exchange,提问作者user21168361
相关产品推荐
相关产品推荐

