8

While looking for a solution for the Hungarian problem, I found this GitHub link.

I went through the readme.md file and I performed everything described there. After copying hungarian.so into my working directory, when I tried to compile hungarian.cpp using make hungarian, I got this output:

anupam@JAZZ:~/Python/hungarian-master$ make hungarian
g++     hungarian.cpp   -o hungarian
hungarian.cpp:7:20: fatal error: Python.h: No such file or directory
 #include "Python.h"
                    ^
compilation terminated.
make: *** [hungarian] Error 1

I found this related question on Stack Overflow, but the answer didn't work for me.

I am very new to GitHub I don't know how to add modules on g++. Can someone help me with that, and what to do next?

  • 4
    So running sudo apt-get install python-dev did not work? – Salem Sep 21 '14 at 14:35
  • yeah ,, @Salem it didn,t worked for me.. – lazarus Sep 21 '14 at 14:46
8

After looking at https://github.com/hrldcpr/hungarian/blob/master/hungarian.cpp, it seems that you need both:

#include "Python.h"
#include "numpy/arrayobject.h"

So install the following packages:

sudo apt-get install libpython2.7-dev python-numpy

To identify the missing packages (the ones providing the headers), look at packages.ubuntu.com.

  • ,I had this too installed ,,,libpython2.7-dev is already the newest version. – lazarus Sep 21 '14 at 14:49
  • 1
    @jazzz: Since you installed python-dev you now have libpython2.7-dev as well as it's a dependency of python-dev. Problem solved isn't it? – Sylvain Pineau Sep 21 '14 at 14:51
  • 1
    @jazz You can check the packages dependencies here: packages.ubuntu.com/trusty/python-dev and packages.ubuntu.com/trusty/libpython-dev – Sylvain Pineau Sep 21 '14 at 14:54
  • Thanx @Sylvain Pineau ,,well meanwhile I looked at stackoverflow.com/questions/11041299/… ,and in one of the comment I got Most likely Python.h is not in your build systems' include path. You can find out where your Python.h is by running dpkg -L python-dev | grep Python.h and when I tried this on my system I am getting nothig??? anupam@JAZZ:~/Python/hungarian-master$ dpkg -L python-dev | grep Python.h anupam@JAZZ:~/Python/hungarian-master$ how can I resolve it?? – lazarus Sep 21 '14 at 15:42
  • 1
    @jazzz Try with this command instead: dpkg-query -L libpython2.7-dev | grep Python.h – Sylvain Pineau Sep 21 '14 at 15:58
8

For Ubuntu 15.10 and Python 3:

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
2

This is python code extending with C. No need to use make. Python itself will take care of the cpp code compilation with proper flags.

First you need to have header files and a static library. Install those as,

sudo apt-get install python-dev

Now follow these commands to execute example.py in your code.

python setup.py build
cp  build/lib.linux-i686-2.7/hungarian.so .
python example.py

Note: I am using python2.7, you should take care of your version of python when execute the above commands. It is worth mentioning that you need to install python-numpy if you not have it as pyhton script need it.

  • Thanx @souravc ,it worked but when I run $python example.py it gives me anupam@JAZZ:~/Python/hungarian-master$ python example.py [1 2 0 4 5 3 7 6] but I need to calculate the net Assignment profit,, here it is giving output for print hungarian.lap(a)[0],, (what is this)? – lazarus Sep 21 '14 at 15:00
  • 1
    @jazzz I have no idea about hungarian problem. I think they have provided the basic code hungarian.cpp and an example to execute some basic function of it in eample.py. If you need more you might have to write your own code. – souravc Sep 21 '14 at 15:06

protected by Community Jul 19 at 8:55

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.