kesalahan fatal: "python.h" tidak ada file atau direktori?


10

Saat mencari solusi untuk masalah Hongaria , saya menemukan tautan GitHub ini .

Saya membaca readme.mdfile dan melakukan semua yang dijelaskan di sana. Setelah menyalin hungarian.soke direktori kerja saya, ketika saya mencoba mengkompilasi hungarian.cppmenggunakan make hungarian, saya mendapatkan output ini:

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

Saya menemukan pertanyaan terkait ini di Stack Overflow , tetapi jawabannya tidak berhasil untuk saya.

Saya sangat baru di GitHub. Saya tidak tahu cara menambahkan modul g++. Adakah yang bisa membantu saya dengan hal itu, dan apa yang harus saya lakukan selanjutnya?


4
Jadi berlari sudo apt-get install python-devtidak berhasil?
Salem

yeah ,, @Salem itu tidak, t bekerja untuk saya ..
lazarus

Jawaban:


11

Setelah melihat https://github.com/hrldcpr/hungarian/blob/master/hungarian.cpp , tampaknya Anda membutuhkan keduanya:

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

Jadi instal paket-paket berikut:

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

Untuk mengidentifikasi paket-paket yang hilang (yang menyediakan tajuk), lihat paket.ubuntu.com .


, Saya sudah menginstal ini juga ,,, libpython2.7-dev sudah merupakan versi terbaru.
lazarus

1
@jazzz: Karena Anda menginstal python-devAnda sekarang memiliki libpython2.7-devdan itu adalah ketergantungan python-dev. Masalah terpecahkan bukan?
Sylvain Pineau

1
@jazz Anda dapat memeriksa dependensi paket di sini: packages.ubuntu.com/trusty/python-dev dan packages.ubuntu.com/trusty/libpython-dev
Sylvain Pineau

Thanx @Sylvain Pineau ,, well sementara itu saya melihat stackoverflow.com/questions/11041299/… , dan di salah satu komentar saya mendapatkan Kemungkinan besar Python.h tidak ada dalam jalur sistem bangun termasuk dalam sistem Anda. Anda dapat mencari tahu di mana Python.h Anda berada dengan menjalankan dpkg -L python-dev | grep Python.h dan ketika saya mencoba ini pada sistem saya, saya mendapatkan nothig ??? anupam @ JAZZ: ~ / Python / hungarian-master $ dpkg -L python-dev | grep Python.h anupam @ JAZZ: ~ / Python / hungarian-master $ bagaimana saya bisa mengatasinya ??
lazarus

1
@jazzz Cobalah dengan perintah ini sebagai gantinya:dpkg-query -L libpython2.7-dev | grep Python.h
Sylvain Pineau

8

Untuk Ubuntu 15.10 dan 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

Ini adalah kode python memperluas dengan C . Tidak perlu digunakan make. Python sendiri akan mengurus cppkompilasi kode dengan flag yang tepat.

Pertama, Anda harus memiliki file header dan perpustakaan statis. Instal mereka sebagai,

sudo apt-get install python-dev

Sekarang ikuti perintah ini untuk mengeksekusi example.pydalam kode Anda.

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

Catatan: Saya menggunakan python2.7, Anda harus menjaga versi python Anda saat menjalankan perintah di atas. Perlu disebutkan bahwa Anda perlu menginstal python-numpyjika Anda tidak memilikinya sebagai skrip python membutuhkannya.


Thanx @souravc, itu berhasil tetapi ketika saya menjalankan $ python example.py itu memberi saya anupam @ JAZZ: ~ / Python / hungarian-master $ python example.py [1 2 0 4 5 3 7 6] tetapi saya harus menghitung laba Penugasan bersih ,, ini dia berikan keluaran untuk print hungarian.lap (a) [0] ,, (apa ini)?
lazarus

1
@jazzz Saya tidak tahu tentang masalah hungaria. Saya pikir mereka telah memberikan kode dasar hungarian.cppdan contoh untuk menjalankan beberapa fungsi dasar di dalamnya eample.py. Jika Anda membutuhkan lebih banyak, Anda mungkin harus menulis kode Anda sendiri.
souravc
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.