Ubuntu16.04编译pycaffe遇Python.h不存在错误(python-devel无效)求解决
解决Ubuntu 16.04下Anaconda 3.6编译pycaffe时找不到Python.h的问题
你遇到的核心问题其实是Anaconda的Python环境与系统默认Python的路径冲突——虽然系统的/usr/include/python3.5m里有Python.h,但你用的是Anaconda 3.6,编译pycaffe时程序会优先找Anaconda环境下的对应文件,而非系统版本。结合你的尝试,给你几个针对性的解决步骤:
第一步:确认Anaconda环境下的Python.h是否存在
先检查你的Anaconda 3.6目录里有没有开发头文件,执行命令:ls ~/anaconda3/include/python3.6m/Python.h如果提示文件不存在,说明你的Anaconda Python环境缺少开发组件,执行以下命令补装:
conda install -c anaconda python-devel或者直接重新安装带完整开发包的Python 3.6:
conda install python=3.6第二步:精准配置Caffe的makefile.config
打开Caffe根目录下的makefile.config,做以下关键修改:- 取消注释并指定你的Anaconda路径:
ANACONDA_HOME := $(HOME)/anaconda3 - 用Anaconda的Python路径替换系统默认的配置项:
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \ $(ANACONDA_HOME)/include/python3.6m \ $(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include PYTHON_LIB := $(ANACONDA_HOME)/lib - 注释掉原来的系统Python相关配置(比如
# PYTHON_INCLUDE := /usr/include/python2.7 ...这类行)
- 取消注释并指定你的Anaconda路径:
第三步:清理缓存并重新编译
先清除之前的编译残留,避免旧配置干扰:make clean然后激活你的Anaconda环境(确保编译时用的是Anaconda的Python上下文):
source ~/anaconda3/bin/activate最后重新编译pycaffe:
make pycaffe -j4关于切换Python 2.7仍失败的补充
如果你切换到Python 2.7时也遇到同样问题,需要确保:- 你已经激活了Anaconda的Python 2.7环境(比如先创建环境
conda create -n py27 python=2.7,再执行source activate py27) makefile.config里的PYTHON_INCLUDE和PYTHON_LIB都指向这个py27环境的路径,而非系统的Python 2.7目录
- 你已经激活了Anaconda的Python 2.7环境(比如先创建环境
按照这些步骤操作后,应该能顺利解决Python.h找不到的问题。
内容的提问来源于stack exchange,提问作者J. Devez
相关产品推荐
相关产品推荐

