error fatal: Python.h: no existe tal archivo o directorio
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.
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
.
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
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-dev
a 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
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