фатальна помилка: "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

Я знайшов це пов’язане запитання в Stack Overflow , але відповідь не працював для мене.

Я дуже новачок у GitHub, я не знаю, як додати модулі g++. Чи може мені хтось допомогти у цьому, і що робити далі?


4
Так бігати sudo apt-get install python-devне вийшло?
Салем

так, @ @ Салем, це не було, я не працював для мене ..
lazarus

Відповіді:


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

Щоб визначити відсутні пакети (ті, що надають заголовки), подивіться на pack.ubuntu.com .


, У мене це було занадто встановлено ,,, libpython2.7-dev - це вже новітня версія.
Лазар

1
@jazzz: З моменту встановлення у python-devвас зараз є libpython2.7-devтак само, як це залежність python-dev. Проблема вирішена, чи не так?
Sylvain Pineau

1
@jazz Ви можете перевірити пакети залежностей тут: packages.ubuntu.com/trusty/python-dev і packages.ubuntu.com/trusty/libpython-dev
Sylvain Піно

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

1
@jazzz Намагайтеся замість цієї команди:dpkg-query -L libpython2.7-dev | grep Python.h
Sylvain Pineau,

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.


Thanx @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.