error fatal: Python.h: no existe tal archivo o directorio

Resuelto Mohanad Y. asked hace 10 años • 36 respuestas

Estoy intentando crear una biblioteca compartida usando un archivo de extensión C, pero primero tengo que generar el archivo de salida usando el siguiente comando:

gcc -Wall utilsmodule.c -o Utilc

Después de ejecutar el comando, aparece este mensaje de error:

> utilsmodule.c:1:20: fatal error: Python.h: No such file or directory
compilation terminated.

He probado todas las soluciones sugeridas en Internet pero el problema persiste. No tengo ningún problema con Python.h. Logré localizar el archivo en mi máquina.

Mohanad Y. avatar Feb 03 '14 22:02 Mohanad Y.
Aceptado

Parece que no ha instalado correctamente los archivos de encabezado y las bibliotecas estáticas para Python Dev. Utilice su administrador de paquetes para instalarlos en todo el sistema.

Para apt( Ubuntu, Debian... ):

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

Para yum( CentOS, RHEL... ):

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

Para dnf( Fedora... ):

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

Para zypper( openSUSE... ):

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

Para apk( Alpino... ):

# 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

Para apt-cyg( Cygwin... ):

apt-cyg install python-devel   # for python2.x installs
apt-cyg install python3-devel  # for python3.x installs

Nota importante : python3-dev/devel no cubre automáticamente todas las versiones menores de python3.
Por ejemplo, si está utilizando Python 3.11, es posible que necesite instalarpython3.11-dev/python3.11-devel.

wim avatar Feb 03 '2014 15:02 wim

En Ubuntu, estaba ejecutando Python 3 y tuve que instalar

sudo apt-get install python3-dev

Si desea utilizar una versión de Python que no esté vinculada a python3, instale el paquete python3.x-dev asociado. Por ejemplo:

sudo apt-get install python3.5-dev
FreshPow avatar Feb 27 '2014 18:02 FreshPow

Para Python 3.7 y Ubuntu en particular, necesitaba

sudo apt install libpython3.7-dev

. Creo que en algún momento se cambiaron los nombres pythonm.n-deva este.

para Python 3.6, 3.8 a 3.10 (y contando…) de manera similar:

sudo apt install libpython3.6-dev

sudo apt install libpython3.8-dev

sudo apt install libpython3.9-dev

sudo apt install libpython3.10-dev

sudo apt install libpython3.11-dev

sudo apt install libpython3.12-dev

ijoseph avatar Aug 28 '2019 18:08 ijoseph

Dos cosas tienes que hacer.

Instale el paquete de desarrollo para Python, en el caso de Debian/Ubuntu/Mint se hace con el comando:

sudo apt-get install python-dev

Lo segundo es que los archivos de inclusión no están de forma predeterminada en la ruta de inclusión, ni la biblioteca de Python está vinculada con el ejecutable de forma predeterminada. Debe agregar estos indicadores (reemplace la versión de Python en consecuencia):

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

En otras palabras, tu comando de compilación debería ser:

gcc -Wall -I/usr/include/python2.7 -lpython2.7  utilsmodule.c -o Utilc 
vartec avatar Feb 03 '2014 15:02 vartec