erreur fatale: «python.h» aucun fichier ou répertoire?

10

En cherchant une solution au problème hongrois , j'ai trouvé ce lien GitHub .

J'ai parcouru le readme.mddossier et j'ai effectué tout ce qui y est décrit. Après avoir copié hungarian.sodans mon répertoire de travail, lorsque j'ai essayé de compiler hungarian.cppavec make hungarian, j'ai obtenu cette sortie:

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

J'ai trouvé cette question connexe sur Stack Overflow , mais la réponse n'a pas fonctionné pour moi.

Je suis très nouveau sur GitHub, je ne sais pas comment ajouter des modules g++. Quelqu'un peut-il m'aider avec cela et que faire ensuite?

lazarus
la source
4
La course sudo apt-get install python-devn'a donc pas fonctionné?
Salem
ouais ,, @Salem ça n'a pas marché pour moi ..
lazarus

Réponses:

11

Après avoir consulté https://github.com/hrldcpr/hungarian/blob/master/hungarian.cpp , il semble que vous ayez besoin des deux:

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

Installez donc les packages suivants:

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

Pour identifier les packages manquants (ceux fournissant les en-têtes), consultez packages.ubuntu.com .

Sylvain Pineau
la source
, Je l'avais aussi installé ,,, libpython2.7-dev est déjà la dernière version.
lazarus
1
@jazzz: Depuis que vous avez installé, python-devvous en avez maintenant libpython2.7-devainsi que sa dépendance python-dev. Le problème résolu n'est-ce pas?
Sylvain Pineau
1
@jazz Vous pouvez vérifier les dépendances des packages ici: packages.ubuntu.com/trusty/python-dev et packages.ubuntu.com/trusty/libpython-dev
Sylvain Pineau
Thanx @Sylvain Pineau ,, eh bien, en attendant, j'ai regardé stackoverflow.com/questions/11041299/… , et dans l'un des commentaires que j'ai eu, très probablement Python.h n'est pas dans le chemin d'inclusion de vos systèmes de build. Vous pouvez découvrir où se trouve votre Python.h en exécutant dpkg -L python-dev | grep Python.h et quand j'ai essayé cela sur mon système, je ne reçois rien ??? anupam @ JAZZ: ~ / Python / hungarian-master $ dpkg -L python-dev | grep Python.h anupam @ JAZZ: ~ / Python / hungarian-master $ comment puis-je le résoudre ??
lazarus
1
@jazzz Essayez plutôt cette commande:dpkg-query -L libpython2.7-dev | grep Python.h
Sylvain Pineau
8

Pour Ubuntu 15.10 et 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
la source
3

Ceci est le code de python extension avec C . Pas besoin d'utiliser make. Python se chargera de la cppcompilation du code avec les indicateurs appropriés.

Vous devez d'abord avoir des fichiers d'en-tête et une bibliothèque statique. Installez-les comme,

sudo apt-get install python-dev

Suivez maintenant ces commandes pour exécuter example.pydans votre code.

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

Remarque: J'utilise python2.7, vous devez prendre soin de votre version de python lorsque vous exécutez les commandes ci-dessus. Il convient de mentionner que vous devez l'installer python-numpysi vous ne l'avez pas car le script python en a besoin.

souravc
la source
Thanx @souravc, cela a fonctionné mais lorsque j'exécute $ python example.py, cela me donne un anupam @ JAZZ: ~ / Python / hungarian-master $ python example.py [1 2 0 4 5 3 7 6] mais je dois calculer le bénéfice net d'affectation ,, ici, il donne la sortie pour imprimer hungarian.lap (a) [0] ,, (qu'est-ce que c'est)?
lazarus
1
@jazzz Je n'ai aucune idée du problème hongrois. Je pense qu'ils ont fourni le code de base hungarian.cppet un exemple pour exécuter une fonction de base de celui-ci dans eample.py. Si vous en avez besoin, vous devrez peut-être écrire votre propre code.
souravc