J'essaie de créer une bibliothèque partagée à l'aide d'un fichier d'extension C mais je dois d'abord générer le fichier de sortie à l'aide de la commande ci-dessous:
gcc -Wall utilsmodule.c -o Utilc
Après avoir exécuté la commande, je reçois ce message d'erreur:
utilsmodule.c: 1: 20: erreur fatale: Python.h: aucune compilation de fichiers ou de répertoires de ce type ne s'est terminée.
J'ai essayé toutes les solutions suggérées sur Internet, mais le problème persiste. Je n'ai aucun problème avec Python.h
. J'ai réussi à localiser le fichier sur ma machine.
la source
locate Python.h
voir si vous avez déjà le fichier avant de faire tout cela. Si vous pouvez trouver le fichier localisé, la plupart du temps, cette réponse fonctionnera: stackoverflow.com/a/19344978/4954434 (Il s'agit peut-être simplement d'un problème de chemin)sudo yum install python27-devel
apt-get install python3.6-dev
fonctionné pour moi.sudo apt-get install python3.6-dev
sudo apt-get install python3.7-dev
.Sur Ubuntu, j'utilisais Python 3 et je devais installer
Si vous souhaitez utiliser une version de Python qui n'est pas liée à python3, installez le package python3.x-dev associé. Par exemple:
la source
sudo apt-get install python3.4-dev
pour mon Python3.4 et cela a résolu mon problème.sudo apt-get install python2.7-dev
le problème a été résolupython3-dev
installera les dépendances pour cette version qui est liée à lapython3
commande. Donc, si vous souhaitez installer pour une version spécifique, utilisez la version complète comme -python3.x-dev
.sudo apt-get install python3.6-dev
Pour Python 3.7 et Ubuntu en particulier, j'avais besoin
sudo apt install libpython3.7-dev
. Je pense qu'à un moment donné, les noms ont été changés de
pythonm.n-dev
ceci.pour Python 3.6, de la même manière:
sudo apt install libpython3.6-dev
la source
sudo apt install libpython3.6-dev
Vous devez faire deux choses.
Installez le package de développement pour Python, dans le cas de Debian / Ubuntu / Mint, cela se fait avec la commande:
La deuxième chose est que les fichiers d'inclusion ne sont pas par défaut dans le chemin d'inclusion, ni la bibliothèque Python liée à l'exécutable par défaut. Vous devez ajouter ces drapeaux (remplacer la version de Python en conséquence):
En d'autres termes, votre commande de compilation doit être:
la source
pkg-config
au lieu d'un brut-I
: stackoverflow.com/a/21531170/895245Si vous utilisez un Raspberry Pi:
la source
sur Fedora, exécutez ceci pour Python 2:
et pour Python 3:
la source
apt-get install python-dev
.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 sur laquelle vous testez.
la source
Solution pour Cygwin
Vous devez installer le package
python2-devel
oupython3-devel
, selon la version Python que vous utilisez.Vous pouvez l'installer rapidement en utilisant le 32 bits ou le 64 bits
setup.exe
(selon votre installation) de Cygwin.com .Exemple (modifiez
setup.exe
le nom de fichier et la version principale de Python si vous en avez besoin):Vous pouvez également consulter mon autre réponse pour quelques options supplémentaires pour installer les packages de Cygwin à partir de la ligne de commande.
la source
Dans l'API AWS (centOS), son
la source
pip install cryptography
lors d'une tentative sur une instance d'Amazon Linux.Pour moi, le changer en cela a fonctionné:
J'ai trouvé le fichier
/usr/include/python2.7/Python.h
, et comme il/usr/include
est déjà dans le chemin d'inclusion, celapython2.7/Python.h
devrait suffire.Vous pouvez également ajouter le chemin d'inclusion à partir de la ligne de commande -
gcc -I/usr/lib/python2.7
(merci @ erm3nda).la source
gcc -I/usr/lib/python2.7 etc
plutôt que de coder en dur les appels d'inclusion.Assurez-vous que les fichiers de développement Python sont fournis avec votre système d'exploitation.
Vous ne devez pas coder en dur la bibliothèque et inclure des chemins. Utilisez plutôt pkg-config, qui affichera les options correctes pour votre système spécifique:
Vous pouvez l'ajouter à votre ligne gcc :
la source
Installation d'AWS EC2 exécutant python34:
sudo yum install python34-devel
la source
Dans mon cas, ce qui l'a corrigé dans Ubuntu était d'installer les packages
libpython-all-dev
(oulibpython3-all-dev
si vous utilisez Python 3).la source
python-all-dev
dans mon cas, mais assez proche.Si vous utilisez un virtualenv avec un python 3.6 (edge en ce moment), assurez-vous d'installer le dev correspondant python 3.6
sudo apt-get install python3.6-dev
, sinon l'exécutionsudo python3-dev
installera le dev python 3.3.3-1, ce qui ne résoudra pas le problème.la source
Ce n'est pas la même situation, mais cela fonctionne aussi pour moi et maintenant je peux utiliser SWIG avec Python3.5 :
J'essayais de compiler:
Avec Python 2.7 fonctionne très bien, pas avec ma version 3.5:
Après avoir exécuté dans mon installation Ubuntu 16.04:
Maintenant, je peux compiler sans problème Python3.5:
la source
J'ai également rencontré cette erreur lors de l'installation de coolprop dans ubuntu.
Pour Ubuntu 16.04 avec Python 3.6
Si jamais cela ne fonctionne pas, essayez d'installer / mettre à jour la
gcc
lib.la source
python3-dev
plusieurs fois et continuais à obtenir la même erreur, mais je ne savais paspython3.6-dev
!! Merci!!essayez apt-file. Il est difficile de se souvenir du nom du package où réside le fichier manquant. Il est générique et utile pour tous les fichiers de package.
Par exemple:
Maintenant, vous pouvez deviner quel expert choisir.
la source
J'ai réussi à résoudre ce problème et à générer le fichier .so en une seule commande
la source
Pour les camarades OpenSuse là-bas:
la source
Pour CentOS 7:
J'ai suivi les instructions ici pour installer python3.6 sur plusieurs machines virtuelles: https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-local-programming- environnement-sur-centos-7 et a ensuite pu construire mod_wsgi et le faire fonctionner avec un python3.6 virtualenv
la source
Si vous utilisez Python 3.6 sur Amazon Linux (basé sur RHEL, mais les réponses RHEL données ici ne fonctionnent pas):
la source
Cette erreur s'est produite lorsque j'ai tenté d'installer ctds sur CentOS 7 avec Python3.6. J'ai fait toutes les astuces mentionnées ici, y compris
yum install python34-devel
. Le problème aPython.h
été détecté dans/usr/include/python3.4m but not in /usr/include/python3.6m
. J'ai essayé d'utiliser--global-option
pour pointer pour inclure dir (pip3.6 install --global-option=build_ext --global-option="--include-dirs=/usr/include/python3.4m" ctds
). Cela a abouti à unlpython3.6m
introuvable lors de la liaison des ctd.Enfin, ce qui a fonctionné était de corriger l'environnement de développement pour Python3.6 à corriger avec les bibliothèques include et.
Python.h doit être dans votre chemin d'inclusion pour gcc. Quelle que soit la version de python utilisée, par exemple s'il s'agit de la version 3.6, elle devrait l'être en
/usr/include/python3.6m/Python.h
général.la source
Bien sûr,
python-dev
oulibpython-all-dev
sont la première chose à (apt
)install
, mais si cela n'aide pas comme c'était mon cas, je vous conseille d'installer les packages étrangers d'interface de fonction parsudo apt-get install libffi-dev
etsudo pip install cffi
.Cela devrait aider, surtout si vous voyez l'erreur comme / de
c/_cffi_backend.c:2:20: fatal error: Python.h: No such file or directory
.la source
Il apparaît souvent lorsque vous essayez de supprimer
python3.5
et d'installerpython3.6
.Ainsi, lors de l'utilisation de
python3
(whichpython3 -V
=>python3.6
) pour installer certains packages, l'en-python3.5
tête requis apparaîtra cette erreur.Résoudre par installer le
python3.6-dev
module.la source
Vous devez installer les fichiers de développement Python sur votre système d'exploitation si le Python fourni avec votre système d'exploitation ne les accompagne pas. Les nombreuses réponses à cette question montrent les innombrables façons dont cela peut être réalisé sur différents systèmes.
Lorsque vous l'avez fait, le problème est de dire au compilateur où ils se trouvent et comment les compiler. Python est livré avec un programme appelé
python-config
. Pour la compilation, vous avez besoin de la--includes
sortie et pour lier un programme à la bibliothèque Python (incorporant Python dans votre programme) la--ldflags
sortie. Exemple:Le
python-config
programme peut être nommé d'après les versions de Python - sur Debian, Ubuntu par exemple, celles-ci peuvent être nomméespython3-config
oupython3.6-config
.la source
Parfois, même après l'installation de python-dev, l'erreur persiste, recherchez l'erreur si 'gcc' est manquant.
Téléchargez d'abord comme indiqué dans https://stackoverflow.com/a/21530768/8687063 , puis installez gcc
Pour apt (Ubuntu, Debian ...):
Pour miam (CentOS, RHEL ...):
Pour dnf (Fedora ...):
Pour zypper (openSUSE ...):
Pour apk (Alpine ...):
la source
Cela signifie que ce
Python.h
n'est pas dans les chemins d'inclusion par défaut de votre compilateur. L'avez-vous installé à l'échelle du système ou localement? Quel est votre OS?Vous pouvez utiliser l'
-I<path>
indicateur pour spécifier un répertoire supplémentaire dans lequel votre compilateur doit rechercher les en-têtes. Vous devrez probablement effectuer un suivi-L<path>
afin que gcc puisse trouver la bibliothèque avec laquelle vous allez créer un lien-l<name>
.la source