фатальная ошибка: «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
источник
Спасибо @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