Parece que no ha instalado correctamente los archivos de encabezado y las bibliotecas estáticas para python dev. Use 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
locate Python.hver si ya tienes el archivo antes de hacer todo esto. Si puede encontrar el archivo ubicado, principalmente esta respuesta funcionará: stackoverflow.com/a/19344978/4954434 (Podría ser solo un problema de ruta)sudo yum install python27-develapt-get install python3.6-devfuncionó para mí.sudo apt-get install python3.6-devsudo apt-get install python3.7-dev.En Ubuntu, estaba ejecutando Python 3 y tuve que instalar
Si desea utilizar una versión de Python que no esté vinculada a python3, instale el paquete python3.x-dev asociado. Por ejemplo:
fuente
sudo apt-get install python3.4-devEjecuté el comando para mi Python3.4 y esto resolvió mi problema.sudo apt-get install python2.7-devsolucioné el problemapython3-devinstalará dependencias para esa versión que está vinculada alpython3comando. Por lo tanto, si desea instalar una versión específica, use la versión completa como -python3.x-dev.sudo apt-get install python3.6-devPara Python 3.7 y Ubuntu en particular, necesitaba
sudo apt install libpython3.7-dev. Creo que en algún momento los nombres se cambiaron de
pythonm.n-deva esto.para Python 3.6, de manera similar:
sudo apt install libpython3.6-devfuente
sudo apt install libpython3.6-devDos cosas que tienes que hacer.
Instale el paquete de desarrollo para Python, en el caso de Debian / Ubuntu / Mint se hace con el comando:
Lo segundo es que los archivos de inclusión no están predeterminados 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):
En otras palabras, su comando de compilación debería ser:
fuente
pkg-configlugar de un raw-I: stackoverflow.com/a/21531170/895245Si está utilizando una Raspberry Pi:
fuente
en Fedora ejecuta esto para Python 2:
y para Python 3:
fuente
apt-get install python-dev.Si está utilizando tox para ejecutar pruebas en múltiples versiones de Python, es posible que deba instalar las bibliotecas de desarrollo de Python para cada versión de Python en la que esté probando.
fuente
Solución para Cygwin
Necesita instalar el paquete
python2-developython3-devel, dependiendo de la versión de Python que esté utilizando.Puede instalarlo rápidamente utilizando 32 bits o 64 bits
setup.exe(dependiendo de su instalación) de Cygwin.com .Ejemplo (modifique
setup.exeel nombre de archivo y la versión principal de Python si es necesario):También puede consultar mi otra respuesta para ver algunas opciones más para instalar los paquetes de Cygwin desde la línea de comandos.
fuente
En AWS API (centOS) su
fuente
pip install cryptographyen una instancia de Amazon Linux.Para mí, cambiarlo a esto funcionó:
Encontré el archivo
/usr/include/python2.7/Python.h, y dado/usr/includeque ya está en la ruta de inclusión,python2.7/Python.hdebería ser suficiente.También puede agregar la ruta de inclusión desde la línea de comando -
gcc -I/usr/lib/python2.7(gracias @ erm3nda).fuente
gcc -I/usr/lib/python2.7 etclugar de codificar las llamadas de inclusión.Asegúrese de que los archivos de desarrollo de Python vengan con su sistema operativo.
No debe codificar la biblioteca e incluir rutas. En su lugar, use pkg-config, que generará las opciones correctas para su sistema específico:
Puede agregarlo a su línea gcc :
fuente
Instalación de AWS EC2 ejecutando python34:
sudo yum install python34-develfuente
En mi caso, lo que lo arregló en Ubuntu fue instalar los paquetes
libpython-all-dev(olibpython3-all-devsi usa Python 3).fuente
python-all-deven mi caso, pero lo suficientemente cerca.Si utiliza un virtualenv con un python 3.6 (edge en este momento), asegúrese de instalar el dev python 3.6 correspondiente
sudo apt-get install python3.6-dev, de lo contrario, la ejecuciónsudo python3-devinstalará el dev python 3.3.3-1, que no resolverá el problema.fuente
No es la misma situación, pero también funciona para mí y ahora puedo usar SWIG con Python3.5 :
Estaba tratando de compilar:
Con Python 2.7 funciona bien, no con mi versión 3.5:
Después de ejecutar mi instalación de Ubuntu 16.04:
Ahora puedo compilar sin problemas Python3.5:
fuente
También encontré este error cuando estaba instalando coolprop en ubuntu.
Para ubuntu 16.04 con python 3.6
Si alguna vez esto no funciona, intente instalar / actualizar
gcclib.fuente
python3-devmuchas veces y seguía recibiendo el mismo error, pero no sabíapython3.6-dev! ¡¡Gracias!!prueba apt-file. Es difícil recordar el nombre del paquete donde reside el archivo que falta. Es genérico y útil para cualquier archivo de paquete.
Por ejemplo:
Ahora puede hacer una conjetura experta sobre cuál elegir.
fuente
Logré resolver este problema y generar el archivo .so en un comando
fuente
Para los camaradas de OpenSuse:
fuente
Para CentOS 7:
Seguí las instrucciones aquí para instalar python3.6 en varias máquinas virtuales: https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-local-programming- environment-on-centos-7 y luego pude construir mod_wsgi y hacerlo funcionar con un python3.6 virtualenv
fuente
Si está utilizando Python 3.6 en Amazon Linux (basado en RHEL, pero las respuestas de RHEL proporcionadas aquí no funcionaron):
fuente
Este error ocurrió cuando intenté instalar ctds en CentOS 7 con Python3.6. Hice todos los trucos mencionados aquí, incluidos
yum install python34-devel. El problema fuePython.hencontrado en/usr/include/python3.4m but not in /usr/include/python3.6m. Traté de usar--global-optionpara señalar para incluir dir (pip3.6 install --global-option=build_ext --global-option="--include-dirs=/usr/include/python3.4m" ctds). Esto resultó en unlpython3.6mno encontrado al vincular ctds.Finalmente, lo que funcionó fue arreglar el entorno de desarrollo para Python3.6 necesita corregir con include y libs.
Python.h debe estar en su ruta de inclusión para gcc. Cualquiera que sea la versión de Python que se use, por ejemplo, si es 3.6, entonces debería estar
/usr/include/python3.6m/Python.hnormalmente.fuente
Claro
python-devolibpython-all-deves lo primero que debe hacer (apt)install, pero si eso no ayuda, como fue mi caso, le aconsejo que instale los paquetes de Interfaz de funciones ajenos porsudo apt-get install libffi-devysudo pip install cffi.Esto debería ayudar especialmente si ve el error como / desde
c/_cffi_backend.c:2:20: fatal error: Python.h: No such file or directory.fuente
A menudo aparece cuando intenta eliminar
python3.5e instalarpython3.6.Entonces, al usar
python3(whichpython3 -V=>python3.6) para instalar algunos paquetes, elpython3.5encabezado requerido aparecerá este error.Resolver por
python3.6-devmódulo de instalación .fuente
Debe instalar los archivos de desarrollo de Python en su sistema operativo si el Python proporcionado con su sistema operativo no viene con ellos. Las muchas respuestas a esta pregunta muestran las innumerables formas en que esto se puede lograr en diferentes sistemas.
Cuando lo haya hecho, el problema es decirle al compilador dónde están ubicados y cómo compilarlos. Python viene con un programa llamado
python-config. Para la compilación, necesita la--includessalida y para vincular un programa con la biblioteca de Python (incrustando Python en su programa) la--ldflagssalida. Ejemplo:El
python-configprograma se puede nombrar después de las versiones de Python: en Debian, Ubuntu, por ejemplo, se pueden nombrarpython3-configopython3.6-config.fuente
A veces, incluso después de instalar python-dev, el error persiste. Verifique el error si falta 'gcc'.
Primero descargue como se indica en https://stackoverflow.com/a/21530768/8687063 , luego instale gcc
Para apt (Ubuntu, Debian ...):
Para ñam (CentOS, RHEL ...):
Para dnf (Fedora ...):
Para zypper (openSUSE ...):
Para apk (Alpine ...):
fuente
Esto significa que
Python.hno está en las rutas de acceso predeterminadas de su compilador. ¿Lo ha instalado en todo el sistema o localmente? ¿Cuál es tu sistema operativo?Puede usar el
-I<path>indicador para especificar un directorio adicional donde su compilador debe buscar encabezados. Probablemente tendrá que hacer un seguimiento-L<path>para que gcc pueda encontrar la biblioteca con la que se vinculará usando-l<name>.fuente