фатальная ошибка: «python.h» нет файла или каталога?


10

В поисках решения венгерской проблемы я нашел эту ссылку на GitHub .

Я просмотрел readme.mdфайл и выполнил все описанное там. После копирования hungarian.soв мой рабочий каталог, когда я пытался скомпилировать hungarian.cppс помощью make hungarian, я получил такой вывод:

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

Я нашел этот связанный вопрос по переполнению стека , но ответ не работал для меня.

Я очень новичок в GitHub, я не знаю, как добавить модули g++. Может ли кто-нибудь помочь мне с этим, и что делать дальше?


4
Так бегать sudo apt-get install python-devне получалось?
Салем

да, @Salem это не сработало для меня ..
Лазарь

Ответы:


11

После просмотра https://github.com/hrldcpr/hungarian/blob/master/hungarian.cpp кажется, что вам нужны оба:

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

Поэтому установите следующие пакеты:

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

Чтобы определить недостающие пакеты (те, которые предоставляют заголовки), посмотрите на packages.ubuntu.com .


У меня это тоже установлено ,, libpython2.7-dev уже самая новая версия.
Лазарь

1
@jazzz: С тех python-devпор, libpython2.7-devкак вы установили, у вас есть зависимость python-dev. Проблема решена не так ли?
Сильвен Пино

1
@jazz Вы можете проверить зависимости пакетов здесь: packages.ubuntu.com/trusty/python-dev и packages.ubuntu.com/trusty/libpython-dev
Сильвен Пино,

Спасибо @Sylvain Pineau, тем временем я посмотрел на stackoverflow.com/questions/11041299/… и в одном из комментариев я получил Скорее всего, Python.h отсутствует в пути включения ваших систем сборки. Вы можете узнать, где находится ваш Python.h, запустив dpkg -L python-dev | grep Python.h и когда я попробовал это в моей системе, я ничего не получаю ??? anupam @ JAZZ: ~ / Python / венгерский мастер $ dpkg -L python-dev | grep Python.h anupam @ JAZZ: ~ / Python / Hungarian-Master $, как я могу решить это ??
Лазарь

1
@jazzz Попробуйте вместо этого эту команду:dpkg-query -L libpython2.7-dev | grep Python.h
Сильвен Пино

8

Для Ubuntu 15.10 и 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

3

Это Python код расширения с C . Не нужно использовать make. Сам Python позаботится о cppкомпиляции кода с соответствующими флагами.

Для начала вам нужно иметь заголовочные файлы и статическую библиотеку. Установите те, как,

sudo apt-get install python-dev

Теперь следуйте этим командам для выполнения example.pyв вашем коде.

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

Примечание: я использую python2.7, вы должны позаботиться о вашей версии Python при выполнении вышеуказанных команд. Стоит отметить, что вам нужно установить его, python-numpyесли у вас его нет, так как он нужен скрипту Python.


Спасибо @souravc, это работает, но когда я запускаю $ python example.py, он дает мне anupam @ JAZZ: ~ / Python / Hungarian-master $ python example.py [1 2 0 4 5 3 7 6], но мне нужно вычислить Чистая прибыль Назначения, здесь это дает вывод для печати Hungarian.lap (a) [0] ,, (что это)?
Лазарь

1
@jazzz Я понятия не имею о венгерской проблеме. Я думаю, что они предоставили основной код hungarian.cppи пример для выполнения некоторой базовой функции eample.py. Если вам нужно больше, возможно, вам придется написать свой собственный код.
souravc
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.