Search code examples
pythonubuntucythonpython-c-apipython-c-extension

makecython++ causes fatal error: Python.h: No such file or directory despite python3-dev installed


My makefile:

SHELL := /bin/bash

.PHONY: all
all:
    pip install runcython
    makecython++ stitch_wrapper.pyx "" "stitch_rects.cpp ./hungarian/hungarian.cpp"

hungarian: hungarian/hungarian.so

hungarian/hungarian.so:
    cd hungarian && \
    TF_INC=$$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_include())') && \
    if [ `uname` == Darwin ];\
    then g++ -std=c++11 -shared hungarian.cc -o hungarian.so -fPIC -I $$TF_INC -undefined dynamic_lookup;\
    else g++ -std=c++11 -shared hungarian.cc -o hungarian.so -fPIC -I  $$TF_INC; fi

I have already installed

-cython
-runcython
-python-dev
-python3-dev
-cffi

Unfortunately I continue to get the error:

pkg-config: command not found
.cpp:4:20: fatal error: Python.h: No such file or directory
compilation terminated.
Makefile:5: recipe for target 'all' failed
make: *** [all] Error 1

Solution

  • If you already have

    sudo apt-get install python-dev
    sudo apt-get install python3-dev
    sudo apt-get install libpython3-dev
    sudo apt-get install libpython3.4-dev
    sudo apt-get install libpython3.5-dev
    

    the problem may be related to missing of one of these packages:

    sudo apt-get install Cython
    sudo apt-get install pkgconf
    sudo apt-get install libpkgconf
    sudo apt-get install python-pkgconfig
    sudo apt-get install python3-pkgconfig