致命错误:Python.h:没有此文件或目录(无法用 python-devel 解决)

致命错误:Python.h:没有此文件或目录(无法用 python-devel 解决)

当我尝试在安装了 Anaconda 3.6 的 Ubuntu 16.04 上编译 pycaffe 时出现以下错误:

python/caffe/_caffe.cpp:1:52: fatal error: Python.h: No such file or directory

我尝试使用以下方法安装 python-devel 包

sudo apt-get install python3-dev 
sudo apt-get install python3.5-dev
sudo apt-get install python3.6-dev 

但即使分别尝试上述每一个方法,仍然会出现同样的错误。

正确的 PATH 似乎已添加到 .bashrc 中

export PATH="home/jdevezas/anaconda/bin:$PATH"

在 Caffe 的 makefile.config 中我有

# NOTE: this is required only if you will compile the python interface.
# We need to be able to find Python.h and numpy/arrayobject.h.
#PYTHON_INCLUDE := /usr/include/python2.7 \
        /usr/lib/python2.7/dist-packages/numpy/core/include
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.

ANACONDA_HOME := /home/jdevezas/anaconda

#PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
#            $(ANACONDA_HOME)/include/python2.7 \
#            $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include

# Uncomment to use Python 3 (default is Python 2)
 PYTHON_LIBRARIES := boost_python3 python3.5m
 PYTHON_INCLUDE := /usr/include/python3.5m \
                 /usr/lib/python3.5/dist-packages/numpy/core/include

我也尝试过使用 Python 2.7,但没有结果。我检查了 /usr/include/python3.5m,发现 Python.h 在那里。有什么建议吗?

答案1

要追踪文件所在的包,请使用

apt-file search Python.h 

该列表(适用于 Ubuntu 20.04)显示了最新 Python 版本的两个可能候选者:libpython3.8-dev 和 pypy3-dev。您需要安装的软件包是 libpython3.8-dev

使用以下方式安装 apt-file

sudo apt-get install apt-file

然后更新其数据库:

apt-file update

答案2

在我的例子中,python 文件夹位于/opt/anaconda3/include/,我通过

$ which conda
/opt/anaconda3/bin/conda

$CONDA_PREFIX在我的例子中,该变量是空的,因为

$ echo $CONDA_PREFIX

仅打印一个空行。

答案3

已更新(2021-01-11):在 Linux 或 Windows 中Python.h,标头现在位于$CONDA_PREFIX/include/python3.Y(其中 Y 表示次要版本)$CONDA_PREFIX/include


旧答案:python.h标题在$CONDA_PREFIX/etc/include/python3.6m目录中。

相关内容