web-dev-qa-db-fra.com

J'ai Python sur mon système Ubuntu, mais gcc ne trouve pas Python.h

Je suis sur un ordinateur à l'école, je ne peux donc rien installer.

J'essaie de créer du code C qui peut être exécuté en Python. Il semble que tous les articles que je trouve exigent que vous utilisiez

#include <Python.h>

Je le fais, mais lorsque je compile, il se plaint que il n’existe aucun fichier ou répertoire de ce type.

L'ordinateur a Python (au moins, il a la commande python dans le terminal), et nous pouvons exécuter n'importe quel Python que nous voulons).

J'ai tapé locate Python.h dans le terminal, mais rien n’a été trouvé.

J'ai deux questions:

  1. Puis-je écrire du code C que je peux appeler Python sans Python.h?

  2. Est-ce que je manque quelque chose, et l'ordinateur a en fait Python.h?

49
user979344

Vous avez besoin du python-dev paquet contenant Python.h

48
Andrew Marsh

Sous Ubuntu, vous devez installer un paquet nommé python-dev. Comme ce paquet ne semble pas être installé (locate Python.h n'a rien trouvé) et vous ne pouvez pas l'installer vous-même à l'échelle du système, nous avons besoin d'une solution différente.

Vous pouvez installer Python dans votre répertoire personnel. Aucune autorisation spéciale n'est nécessaire pour le faire. Si vous êtes autorisé à utiliser un navigateur Web et à exécuter un gcc, cela devrait fonctionner pour vous. . À cette fin

  1. Télécharger l'archive source .

  2. Décompressez avec

    tar xjf Python-2.7.2.tar.bz2
    
  3. Construire et installer avec

    cd Python-2.7.2
    ./configure --prefix=/home/username/python --enable-unicode=ucs4
    make
    make install
    

Maintenant, vous avez une installation complète Python dans votre répertoire personnel. Passez -I /home/username/python/include à gcc lors de la compilation pour le rendre conscient de Python.h. Passer -L /home/username/python/lib et -lpython2.7 lors de la liaison.

42
Sven Marnach

Vous devez utiliser # include "python2.7/Python.h" au lieu de # include "Python.h".

30
Kuchhu

Pour Ubuntu 15.10 et Python 3, répondant à cette question car ils n’ont pas Python.h mais avec des droits administratifs, les problèmes suivants pourraient le résoudre:

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
24
Martin Thoma

Sur Ubuntu, vous pouvez simplement taper Sudo apt-get install python-dev -y in terminal pour installer le paquet python-dev.

16
danielcooperxyz

Les fichiers d'en-tête sont maintenant fournis par libpython2.7-dev .

Vous pouvez utiliser le formulaire de recherche sur packages.ubuntu.com pour savoir quel paquet fournit Python.h.

6
unutbu

Vous devez installer python-dev.
Pour Ubuntu:
Sudo apt-get install python-dev # for python2.x installs Sudo apt-get install python3-dev # for python3.x installs
Pour plus de distributions, référez-vous -
https://stackoverflow.com/a/21530768/6841045

5
vedipen

J'ai rencontré le même problème en essayant de construire une très ancienne copie d'omniORB sur une machine CentOS 7. Résolu le problème en installant les bibliothèques de développement python:

# yum install python-devel

Cela a installé le Python.h dans:

/usr/include/python2.7/Python.h

4
user3892260

J'ai trouvé la réponse dans ubuntuforums ( buntuforums ), vous pouvez simplement ajouter ceci à votre gcc '$ (python-config --includes)'

gcc $(python-config --includes) urfile.c
4

Cela se produit parce que Python.h Ne se trouve pas dans le dossier d'inclusion par défaut (qui est /usr/include/).

L'installation de Python-dev pourrait aider:

$ Sudo apt-get install python-dev 

Mais le problème persiste principalement parce que les packages de développement sont créés dans un dossier séparé à l'intérieur du dossier d'inclusion proprement dit (/usr/include/python2.7 Ou python3).

Vous devez donc soit spécifier le dossier de la bibliothèque en utilisant l'option -I Dans gcc, soit en créant des liens symboliques vers tout ce qui se trouve dans ces dossiers juste à l'extérieur (je préférerais l'ancienne option).

tilisation de l'option -I Dans gcc:

$ gcc -o hello -I /usr/include/python2.7 helloworld.c

Création de liens symboliques:

$ Sudo ln -sv /usr/include/python2.7/* /usr/include/
1
PunyCode

Allez au gestionnaire de paquets Synaptic. Recharger -> Rechercher python -> sélectionner le package python que vous voulez -> Soumettre -> Installer Works pour moi;)

Exactement, le paquet que vous devez installer est python-dev.

1
thathashd

Cela signifie que vous n'êtes pas des bibliothèques d'installation pour python dev.

Si vous utilisez un système d'exploitation Linux, vous pouvez résoudre ce problème à l'aide de commandes séparées ci-dessous:

  • Ubuntu (Debian):

    Sudo apt-get install python-dev (Py2) ou Sudo apt-get install python3-dev (Py3)

  • Rehat (CentOS):

    yum install python-devel

0
Little Roys