Question Erreur fatale: Python.h: aucun fichier ou répertoire de ce type


J'essaye de construire une bibliothèque partagée en utilisant un fichier d'extension C mais d'abord je dois générer le fichier de sortie en utilisant la commande ci-dessous:

gcc -Wall utilsmodule.c -o Utilc

Après avoir exécuté la commande, j'obtiens ce message d'erreur:

utilsmodule.c: 1: 20: erreur fatale: Python.h: aucun fichier ou répertoire de ce type   compilation terminée.

en fait j'ai essayé toutes les solutions proposées sur internet mais le problème existe toujours ... aussi je n'ai aucun problème avec Python.h. J'ai réussi à localiser le fichier sur ma machine ... quelqu'un a déjà fait face au même problème?


712
2018-02-03 15:00


origine


Réponses:


On dirait que vous n'avez pas correctement installé les fichiers d'en-tête et les bibliothèques statiques pour python dev. Utilisez votre gestionnaire de paquets pour les installer à l'échelle du système.

Pour apt (Ubuntu, Debian ...):

sudo apt-get install python-dev   # for python2.x installs
sudo apt-get install python3-dev  # for python3.x installs

Pour yum (CentOS, RHEL ...):

sudo yum install python-devel   # for python2.x installs
sudo yum install python34-devel   # for python3.4 installs

Pour dnf (Feutre...):

sudo dnf install python2-devel  # for python2.x installs
sudo dnf install python3-devel  # for python3.x installs

Pour zypper (openSUSE ...):

sudo zypper in python-devel   # for python2.x installs
sudo zypper in python3-devel  # for python3.x installs

Pour apk (Alpin...):

# This is a departure from the normal Alpine naming
# scheme, which uses py2- and py3- prefixes
sudo apk add python2-dev  # for python2.x installs
sudo apk add python3-dev  # for python3.x installs

1374
2018-02-03 15:10



Sur Ubuntu, je courais Python 3 et je devais installer

sudo apt-get install python3-dev

Si vous voulez utiliser une version de Python qui n'est pas liée à python3, installez le paquetage python3.x-dev associé. Par exemple:

sudo apt-get install python3.5-dev

229
2018-02-27 18:54



Deux choses que tu as à faire.

Installez le paquet de développement pour Python, dans le cas de Debian / Ubuntu / Mint c'est fait avec la commande:

sudo apt-get install python-dev

La deuxième chose est que les fichiers d'inclusion ne sont pas par défaut dans le chemin d'inclusion, et que la bibliothèque Python n'est pas liée par défaut à l'exécutable. Vous devez ajouter ces drapeaux (remplacez la version de Python en conséquence):

-I/usr/include/python2.7 -lpython2.7 

En d'autres termes, votre commande de compilation devrait être:

gcc -Wall -I/usr/include/python2.7 -lpython2.7  utilsmodule.c -o Utilc 

54
2018-02-03 15:13



Si vous utilisez un Raspberry Pi:

sudo apt-get install python-dev

44
2017-08-16 00:36



sur Fedora, lancez ceci pour Python 2:

sudo dnf install python2-devel

et pour Python 3:

sudo dnf install python3-devel

31
2018-06-05 21:48



Si vous utilisez tox Pour exécuter des tests sur plusieurs versions de Python, vous devrez peut-être installer les bibliothèques de développement Python pour chaque version de Python que vous testez.

sudo apt-get install python2.6-dev 
sudo apt-get install python2.7-dev 
etc.

25
2018-04-23 17:38



Je voudrais ajouter aussi la solution pour Cygwin:

Tu dois installer le paquet python2-devel ou python3-devel, selon la version de Python que vous utilisez.

Vous pouvez rapidement l'installer en utilisant le 32 bits ou 64 bits  setup.exe (en fonction de votre installation) de Cygwin.com.

Exemple (modifier setup.exele nom de fichier et la version majeure de Python si vous avez besoin):

$ setup.exe -q --packages=python3-devel

Vous pouvez également vérifier mon autre réponse pour quelques options supplémentaires pour installer les paquets de Cygwin à partir de la ligne de commande.


20
2018-03-23 17:50



Dans AWS API (centOS), son

yum install python27-devel

18
2017-07-09 06:20



Pour moi, le changer pour cela a fonctionné:

#include <python2.7/Python.h>

J'ai trouvé le fichier /usr/include/python2.7/Python.h, et depuis /usr/include est déjà dans le chemin d'inclusion, puis python2.7/Python.h devrait être suffisant.

Vous pouvez également ajouter le chemin d'inclusion depuis la ligne de commande à la place - gcc -I/usr/lib/python2.7 (merci @ erm3nda).


18
2017-11-14 17:14



Installation d'AWS EC2 exécutant python34:

sudo yum install python34-devel


14
2017-12-12 22:57



Assurez-vous que les fichiers de développement Python sont livrés avec votre système d'exploitation.

Vous ne devriez pas coder en dur la bibliothèque et inclure des chemins. Au lieu de cela, utilisez pkg-config, qui affichera les options correctes pour votre système spécifique:

$ pkg-config --cflags --libs python2
-I/usr/include/python2.7 -lpython2.7

Vous pouvez l'ajouter à votre gcc ligne:

gcc $(pkg-config --cflags --libs python2) -Wall utilsmodule.c -o Utilc

13
2018-02-03 15:26