Ubuntu20.04下Code::Blocks中C++调用Python3.8报Python.h找不到的配置问题
所需依赖清单
- 核心依赖只有对应Python版本的开发套件:
python3.8-dev。这个包会自动安装C API开发需要的全部头文件、动态链接库,不需要额外装其他第三方组件 - 你已经定位到的
/usr/include/python3.8/Python.h不需要移动、不需要拷贝,保持系统默认存放位置即可
报错原因
出现fatal error: Python.h: No such file or directory的原因很直接:Code::Blocks默认调用的GCC编译器,搜索头文件的路径列表里没有加入/usr/include/python3.8目录,哪怕文件就在硬盘上,编译器找不到就会抛这个错。就算补全了头文件搜索路径,后续链接环节如果没绑定对应的Python动态库,还会跳出一堆找不到函数符号的编译错误。
Code::Blocks 详细配置流程
- 打开你的测试工程,点击顶部菜单栏的
项目->构建选项 - 在弹出的设置窗口左侧列表,选中工程名称根节点(不要单独选Debug或Release子项,否则配置只对单个编译模式生效)
- 切换到
搜索目录标签页:- 选中
编译器子标签,点击「添加」按钮,输入你已定位到的头文件所在路径:/usr/include/python3.8 - 切换到
链接器子标签,点击「添加」按钮,输入Python动态库的存放路径:Ubuntu20.04下该路径默认是/usr/lib/x86_64-linux-gnu
- 选中
- 切换到
链接器设置标签页,在「链接库」区域点击「添加」,输入需要绑定的Python动态库名:python3.8 - 点击「确定」保存所有配置,重新执行编译
实用提示:
- 你写的测试代码里
PyRun_SimpleString("Hallo from Python")不会产生任何实际输出,因为这个接口是直接传入字符串执行Python代码,要看到Python侧的打印效果,需要把这行改成PyRun_SimpleString("print('Hallo from Python')")- 如果配置完成后仍然报链接错误,先在终端执行
sudo apt install python3.8-dev补全开发包的缺失文件,不要手动零散拷贝头文件或库文件到系统路径,很容易出现版本不匹配的奇怪问题。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

