Ubuntu 20.04下Python3.7编译darkflow报Python.h缺失,装python3-dev仍无效
报错触发原因
- 核心问题是Python开发头文件版本不匹配。Ubuntu 20.04系统默认搭载的Python3版本为3.8,通过
sudo apt-get install python3-dev安装的是Python3.8对应的开发组件,配套的Python.h头文件存放在/usr/include/python3.8m路径下。但本次编译操作调用的是独立安装的Python3.7,从gcc编译参数可以看到,编译时指定的头文件搜索路径为/usr/include/python3.7m,该路径下没有对应版本的Python.h文件,自然会触发找不到文件的报错。 - Ubuntu 20.04的官方软件源不内置Python3.7的相关组件,如果你是通过第三方PPA、源码编译等方式安装的Python3.7,通用的
python3-dev包不会为这个独立部署的Python版本补全编译所需的头文件,所以之前的安装操作完全没有命中你的实际需求。 - 终端输出里的
DeprecationWarning: the imp module is deprecated属于Python3.7版本的正常弃用提示,不影响编译流程,不需要额外处理。
对应修复步骤
- 先确认当前Python3.7的实际安装路径,终端执行
python3.7 -c "import sys; print(sys.prefix)"输出安装根目录,检查对应目录下include/python3.7m/Python.h文件是否存在。 - 若缺失对应头文件,需要安装和Python3.7版本严格匹配的开发组件:如果Python3.7是通过PPA源安装的,直接执行
sudo apt-get install python3.7-dev即可补全对应版本的头文件;如果Python3.7是源码编译安装的,需要回到源码安装目录重新执行make install流程,补全缺失的开发相关文件。 - 头文件安装完成后,重新执行编译命令
python3.7 setup.py build_ext --inplace,即可正常识别依赖文件完成darkflow的扩展模块编译。
内容的提问来源于stack exchange,提问作者D Yi
相关产品推荐
相关产品推荐

