web-dev-qa-db-fra.com

Python.h: Aucun fichier ou répertoire de ce type

J'ai récemment installé le développement de KDevelop 4 pour C++ sur mon Macbook Pro exécutant Ubuntu 12.04 LTS.

Je souhaite intégrer une application Python à mon code C++. Pour ce faire, il faut inclure le fichier d’en-tête Python.h. Alors j'ai fait ça.

#include <iostream>
#include <Python.h>

int main(int argc, char **argv) {
    Py_Initialize();
    return 0;
}

Cependant, en cours d'exécution, j'ai reçu la réponse suivante de l'EDI:

fatal error: Python.h: No such file or directory

Cependant, j'ai trouvé le problème assez tôt. Je n'avais pas téléchargé le paquet python-dev. Alors j'ai fait ça. J'ai couru encore mais la même erreur était là encore. J'ai donc pensé que le problème était que le fichier d'en-tête ne soit pas inclus par KDevelop. Ainsi, j'ai ajouté le dossier correspondant au chemin d'inclusion et KDevelop a immédiatement reconnu cela en supprimant le soulignement rouge situé sous la deuxième instruction include du code ci-dessus.

Mais toujours, le problème demeure. J'ai la même erreur. J'apprécierais toute aide ou contribution que vous pourriez apporter :-)

Merci beaucoup.

EDIT: Certains détails que j'ai omis de mentionner plus tôt sont que KDevelop utilise cmake pour mon projet. Je suppose que la raison de mon problème est que cmake ne connaît pas les chemins appropriés du compilateur et de l'éditeur de liens. J'apprécierais toute aide dans la définition des chemins corrects pour cmake.

23
Shubham Goyal

Dans votre CMakeLists.txt, essayez d’ajouter ce qui suit:

find_package(PythonLibs REQUIRED)
include_directories(${PYTHON_INCLUDE_DIRS})
target_link_libraries(<your exe or lib> ${PYTHON_LIBRARIES})

Pour plus de détails sur les commandes, exécutez:

cmake --help-module FindPythonLibs
cmake --help-command find_package
cmake --help-command include_directories
cmake --help-command target_link_libraries
36
Fraser
Sudo apt-get install python2.7-dev

a travaillé pour moi sur un problème de "Python.h: Aucun fichier ou répertoire de ce type"

28
Dimitris Baltas

Vous souhaitez inclure les éléments suivants sur la ligne de compilation:

`python-config --cflags`

et ceci sur la ligne de lien:

`python-config --ldflags`
11
Nikolai Fetissov

Il est fort probable que Python.h ne se trouve pas dans le chemin d'inclusion de votre système de génération. Vous pouvez savoir où se trouve votre Python.h en lançant

dpkg -L python-dev | grep Python.h

Cela vérifiera également que le paquet python-dev a réellement installé Python.h.

Je n'ai pas de kdevelop ici, mais la plupart des IDE ont un paramètre où vous pouvez spécifier le chemin d'inclusion utilisé par le système de compilation, et vous devriez pouvoir ajouter le chemin où se trouve Python.h.

MODIFIER:

Comme Nikolai l'a laissé entendre, vous devrez également ajouter le chemin de bibliothèque correct pour l'étape de liaison. (Sortie de python-config --ldflags).

4
niko

Je suppose qu'il est déjà installé. Trouvez le chemin avec:

find / -iname python.h

et lorsque vous avez terminé, lors de la compilation, ajoutez

-I python_h_path
2
Roxy

Pour les utilisateurs de Linux Ubuntu PuTTY, essayez ceci:

Sudo apt-get update
Sudo apt-get install python-dev

puis compilez

gcc -o check xyz.c -I/usr/include/python2.7/ -lpython2.7

puis lancez-le 

./check 
0
chhotu sardar