błąd krytyczny: „python.h” brak pliku lub katalogu?

10

Szukając rozwiązania problemu węgierskiego , znalazłem ten link GitHub .

Przejrzałem readme.mdplik i wykonałem wszystko, co tam opisano. Po skopiowaniu hungarian.sodo mojego katalogu roboczego, kiedy próbowałem skompilować hungarian.cppprzy użyciu make hungarian, otrzymałem następujące dane wyjściowe:

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

Znalazłem to powiązane pytanie na temat przepełnienia stosu , ale odpowiedź nie działała dla mnie.

Jestem bardzo nowy w GitHub, nie wiem jak dodać moduły g++. Czy ktoś może mi w tym pomóc i co dalej?

Lazarus
źródło
4
Więc bieganie sudo apt-get install python-devnie działało?
Salem,
tak ,, @Salem to nie działało dla mnie ..
Lazarus

Odpowiedzi:

11

Po przejrzeniu https://github.com/hrldcpr/hungarian/blob/master/hungarian.cpp wydaje się, że potrzebujesz obu:

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

Więc zainstaluj następujące pakiety:

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

Aby zidentyfikować brakujące pakiety (te, które zawierają nagłówki), spójrz na packages.ubuntu.com .

Sylvain Pineau
źródło
, Miałem to też zainstalowane ,,, libpython2.7-dev jest już najnowszą wersją.
Lazarus
1
@jazzz: Od czasu zainstalowania python-devmasz teraz libpython2.7-devtak samo zależną python-dev. Problem rozwiązany, prawda?
Sylvain Pineau
1
@jazz Zależności pakietów można sprawdzić tutaj: packages.ubuntu.com/trusty/python-dev i packages.ubuntu.com/trusty/libpython-dev
Sylvain Pineau
Thanx @Sylvain Pineau ,, no cóż, tymczasem spojrzałem na stackoverflow.com/questions/11041299 /... i w jednym z komentarzy otrzymałem Najprawdopodobniej Python.h nie znajduje się w ścieżce dołączania twoich systemów. Możesz dowiedzieć się, gdzie jest twój Python.h, uruchamiając dpkg -L python-dev | grep Python.h i kiedy spróbowałem tego na swoim systemie, nie dostaję nic ??? anupam @ JAZZ: ~ / Python / hungarian-master $ dpkg -L python-dev | grep Python.h anupam @ JAZZ: ~ / Python / hungarian-master $ jak mogę to rozwiązać?
Lazarus
1
@jazzz Zamiast tego spróbuj użyć tego polecenia:dpkg-query -L libpython2.7-dev | grep Python.h
Sylvain Pineau,
8

W przypadku Ubuntu 15.10 i 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
Martin Thoma
źródło
3

Jest to kod pyton rozszerzenie z C . Nie musisz używać make. Sam Python zajmie się cppkompilacją kodu za pomocą odpowiednich flag.

Najpierw musisz mieć pliki nagłówkowe i bibliotekę statyczną. Zainstaluj je jako

sudo apt-get install python-dev

Teraz wykonaj te polecenia, aby wykonać je example.pyw kodzie.

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

Uwaga: Używam python2.7, powinieneś zadbać o swoją wersję Pythona podczas wykonywania powyższych poleceń. Warto wspomnieć, że musisz zainstalować, python-numpyjeśli nie masz go, ponieważ skrypt Pythona tego potrzebuje.

souravc
źródło
Dzięki @souravc, zadziałało, ale kiedy uruchamiam $ python example.py, daje mi anupam @ JAZZ: ~ / Python / hungarian-master $ python example.py [1 2 0 4 5 3 7 6], ale muszę obliczyć zysk netto z przypisania ,, tutaj daje wydruk na węgierski druk .lap (a) [0] ,, (co to jest)?
Lazarus
1
@jazzz Nie mam pojęcia o problemie węgierskim. Myślę, że dostarczyli podstawowy kod hungarian.cppi przykład do wykonania jakiejś podstawowej funkcji w nim eample.py. Jeśli potrzebujesz więcej, być może będziesz musiał napisać własny kod.
souravc,