Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.3K
Visualizações
error fatal: Python.h: No existe tal archivo o directorio

Estoy tratando de construir 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 intentado todas las soluciones sugeridas a través de Internet, pero el problema persiste. No tengo ningún problema con Python.h . Me las arreglé para localizar el archivo en mi máquina.

over 4 years ago · Santiago Trujillo
32 Respostas
Responde à pergunta

0

prueba el archivo apt. 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:

 root@ubuntu234:~/auto# apt-file search --regexp '/Python.h$' pypy-dev: /usr/lib/pypy/include/Python.h python2.7-dbg: /usr/include/python2.7_d/Python.h python2.7-dev: /usr/include/python2.7/Python.h python3.2-dbg: /usr/include/python3.2dmu/Python.h python3.2-dev: /usr/include/python3.2mu/Python.h root@ubuntu234:~/auto#

Ahora puede hacer una suposición experta sobre cuál elegir.

over 4 years ago · Santiago Trujillo Relatório

0

En AWS API (centOS) su

 yum install python27-devel
over 4 years ago · Santiago Trujillo Relatório

0

en Fedora ejecuta esto para Python 2:

 sudo dnf install python2-devel

y para Python 3:

 sudo dnf install python3-devel
over 4 years ago · Santiago Trujillo Relatório

0

Para mí, cambiarlo a esto funcionó:

 #include <python2.7/Python.h>

Encontré el archivo /usr/include/python2.7/Python.h , y dado que /usr/include ya está en la ruta de inclusión, python2.7/Python.h debería ser suficiente.

También puede agregar la ruta de inclusión desde la línea de comandos: gcc -I/usr/lib/python2.7 (gracias @erm3nda).

over 4 years ago · Santiago Trujillo Relatório

0

Si usa tox para ejecutar pruebas en varias versiones de Python, es posible que deba instalar las bibliotecas de desarrollo de Python para cada versión de Python que esté probando.

 sudo apt-get install python2.6-dev sudo apt-get install python2.7-dev etc.
over 4 years ago · Santiago Trujillo Relatório

0

Para los compañeros de OpenSuse:

 sudo zypper install python3-devel
over 4 years ago · Santiago Trujillo Relatório

0

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
over 4 years ago · Santiago Trujillo Relatório

0

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 ( Alpine... ):

 # 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
over 4 years ago · Santiago Trujillo Relatório

0

Esto significa que Python.h no está en las rutas de inclusión predeterminadas de su compilador. ¿Lo ha instalado en todo el sistema o localmente? ¿Cuál es tu sistema operativo?

Podría usar el indicador -I<path> para especificar un directorio adicional donde su compilador debería buscar encabezados. Probablemente tendrá que seguir con -L<path> para que gcc pueda encontrar la biblioteca con la que se vinculará usando -l<name> .

over 4 years ago · Santiago Trujillo Relatório

0

Dos cosas que 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 por defecto en la ruta de inclusión, ni la biblioteca de Python está vinculada con el ejecutable de forma predeterminada. Debe agregar estas banderas (reemplace la versión de Python en consecuencia):

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

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

 gcc -Wall -I/usr/include/python2.7 -lpython2.7 utilsmodule.c -o Utilc
over 4 years ago · Santiago Trujillo Relatório

0

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:

 $ pkg-config --cflags --libs python2 -I/usr/include/python2.7 -lpython2.7

Puede agregarlo a su línea gcc :

 gcc -Wall utilsmodule.c -o Utilc $(pkg-config --cflags --libs python2)
over 4 years ago · Santiago Trujillo Relatório

0

Logré resolver este problema y generar el archivo .so en un solo comando

 gcc -shared -o UtilcS.so -fPIC -I/usr/include/python2.7 -lpython2.7 utilsmodule.c
over 4 years ago · Santiago Trujillo Relatório

0

No es la misma situación, pero también funciona para mí y ahora puedo usar SWIG con Python3.5 :

Estaba tratando de compilar:

 gcc -fPIC -c existe.c existe_wrap.c -I /usr/include/python3.5m/

Con Python 2.7 funciona bien, no con mi versión 3.5:

existe_wrap.c:147:21: error fatal: Python.h: No existe el archivo o la compilación del directorio finalizó.

Después de ejecutar mi instalación de Ubuntu 16.04:

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

Ahora puedo compilar sin problemas Python3.5:

 gcc -fPIC -c existe.c existe_wrap.c -I /usr/include/python3.5m/
over 4 years ago · Santiago Trujillo Relatório

0

Para CentOS 7:

 sudo yum install python36u-devel

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 compilar mod_wsgi y hacerlo funcionar con un virtualenv de python3.6

over 4 years ago · Santiago Trujillo Relatório

0

Este error ocurrió cuando intenté instalar ctds en CentOS 7 con Python3.6. Hice todos los trucos mencionados aquí, incluido yum install python34-devel . El problema fue que Python.h se encontró en /usr/include/python3.4m but not in /usr/include/python3.6m . Traté de usar --global-option para apuntar a include dir ( pip3.6 install --global-option=build_ext --global-option="--include-dirs=/usr/include/python3.4m" ctds ) . Esto dio como resultado que no se encontrara lpython3.6m al vincular ctds.

Finalmente, lo que funcionó fue arreglar el entorno de desarrollo para que Python3.6 necesita corregirse con include y libs.

 yum -y install https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/python36u-libs-3.6.3-1.ius.centos7.x86_64.rpm

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 en /usr/include/python3.6m/Python.h normalmente.

over 4 years ago · Santiago Trujillo Relatório

0

En mi caso, lo que lo arregló en Ubuntu fue instalar los paquetes libpython-all-dev (o libpython3-all-dev si usas Python 3).

over 4 years ago · Santiago Trujillo Relatório

0

Solución para Cygwin

Debe instalar el paquete python2-devel o python3-devel , según la versión de Python que esté utilizando.

Puede instalarlo rápidamente usando el archivo setup.exe de 32 o 64 bits (dependiendo de su instalación) de Cygwin.com .

Ejemplo (modifique el nombre de archivo de setup.exe y la versión principal de Python si lo necesita):

 $ setup.exe -q --packages=python3-devel

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.

over 4 years ago · Santiago Trujillo Relatório

0

Si usa un virtualenv con un python 3.6 (borde en este momento), asegúrese de instalar el python 3.6 dev correspondiente sudo apt-get install python3.6-dev , de lo contrario, ejecutar sudo python3-dev instalará python dev 3.3.3- 1, que no resolverá el problema.

over 4 years ago · Santiago Trujillo Relatório

0

Seguro python-dev o libpython-all-dev son lo primero que debe install ( apt ), pero si eso no ayuda, como fue mi caso, le aconsejo que instale los paquetes de la interfaz de funciones extranjeras mediante sudo apt-get install libffi-dev y sudo 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 .

over 4 years ago · Santiago Trujillo Relatório

0

Instalación de AWS EC2 ejecutando python34:

sudo yum install python34-devel

over 4 years ago · Santiago Trujillo Relatório

0

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 de pythonm.n-dev a esto.

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

over 4 years ago · Santiago Trujillo Relatório

0

  1. Debe instalar los archivos de desarrollo de Python en su sistema operativo si el Python provisto 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.

  2. Cuando lo haya hecho, el problema es decirle al compilador dónde están ubicados y cómo compilar contra ellos. Python viene con un programa llamado python-config . Para la compilación, necesita la salida --includes y para vincular un programa con la biblioteca de Python (incrustando Python en su programa) la salida --ldflags . Ejemplo:

     gcc -c mypythonprogram.c $(python3-config --includes) gcc -o program mypythonprogram.o $(python3-config --ldflags)

El programa python-config puede recibir el nombre de las versiones de Python; en Debian, Ubuntu, por ejemplo, pueden llamarse python3-config o python3.6-config .

over 4 years ago · Santiago Trujillo Relatório

0

Si está utilizando Python 3.6 en Amazon Linux (basado en RHEL, pero las respuestas de RHEL proporcionadas aquí no funcionaron):

 sudo yum install python36-devel
over 4 years ago · Santiago Trujillo Relatório

0

A menudo aparece cuando intenta eliminar python3.5 e instalar python3.6 .

Entonces, cuando use python3 (que python3 -V => python3.6 ) para instalar algunos paquetes requeridos, el encabezado python3.5 aparecerá este error.

Resuelva instalando el módulo python3.6-dev .

over 4 years ago · Santiago Trujillo Relatório

0

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...):

 sudo apt-get install gcc

Para yum (CentOS, RHEL...):

 sudo yum install gcc

Para dnf (Fedora...):

 sudo dnf install gcc

Para zypper (openSUSE...):

 sudo zypper in gcc

Para apk (Alpino...):

 sudo apk gcc
over 4 years ago · Santiago Trujillo Relatório

0

También encontré este error cuando estaba instalando coolprop en ubuntu.

Para ubuntu 16.04 con python 3.6

 sudo apt-get install python3.6-dev

Si alguna vez esto no funciona, intente instalar/actualizar gcc lib.

 sudo apt-get install gcc
over 4 years ago · Santiago Trujillo Relatório

0

intente localizar su Python.h:

 gemfield@ThinkPad-X1C:~$ locate Python.h /home/gemfield/anaconda3/include/python3.7m/Python.h /home/gemfield/anaconda3/pkgs/python-3.7.6-h0371630_2/include/python3.7m/Python.h /usr/include/python3.8/Python.h

si no lo encuentra, instale python-dev o python3-dev; de lo contrario, incluya la ruta de encabezado correcta para el compilador:

 g++ -I/usr/include/python3.8 ...
over 4 years ago · Santiago Trujillo Relatório

0

Si usa cmake para construir un proyecto, puede usar este ejemplo.

 cmake_minimum_required(VERSION 2.6) project(demo) find_package(PythonLibs REQUIRED) include_directories(${PYTHON_INCLUDE_DIRS}) add_executable(demo main.cpp) target_link_libraries(demo ${PYTHON_LIBRARIES})
over 4 years ago · Santiago Trujillo Relatório

0

Aquí hay otra solución más, porque ninguna de estas soluciones funcionó para mí. Como referencia, estaba tratando de pip install algo en una imagen de Docker base de Amazon Linux AMI para Python 3.6.

Solución no acoplable:

 # Install python3-devel like everyone says yum -y install python36-devel.x86_64 # Find the install directory of `Python.h` rpm -ql python36-devel.x86_64 | grep -i "Python.h" # Forcefully add it to your include path C_INCLUDE_PATH='/usr/include/python3.6m' export C_INCLUDE_PATH

Solución acoplable:

 # Install python3-devel like everyone says RUN yum -y install python36-devel.x86_64 # Find the install directory of `Python.h`, for me it was /usr/include/python3.6m RUN rpm -ql python36-devel.x86_64 | grep -i "Python.h" && fake_command_so_docker_fails_and_shows_us_the_output # Since the previous command contains a purposeful error, remove it before the next run # Forcefully add it to your include path ARG C_INCLUDE_PATH='/usr/include/python3.6m'

NOTA: Si recibe el error al compilar C++, use CPLUS_INCLUDE_PATH .

Alternativamente, puede preferir usar otra imagen de Docker. Por ejemplo, estaba intentando instalar asyncpg~=0.24.0 en python:3.9.4-slim , lo que generó el mismo error que viste. Sin embargo, cuando actualicé la imagen a python:3 , funcionó bien.

over 4 years ago · Santiago Trujillo Relatório

0

Este problema también puede llegar cuando tienes instaladas diferentes versiones de Python y usas un pip que no es el del sistema. En ese caso, el pip que no es del sistema no encontrará la versión correcta de los encabezados de Python.

Me sucedió cuando intentaba instalar pip en un paquete para Python incluido con una aplicación. Como no era Python del sistema, apt install pythonXX-dev no funcionó.

En este caso, la solución es encontrar el encabezado de python correcto:

 find / -iname 'Python.h'

En el resultado, verá los encabezados de Python del sistema y, con suerte, el que está buscando, por ejemplo:

 /usr/include/python3.7m/Python.h /usr/include/python3.6m/Python.h /home/ubuntu/workspace/blender-git/lib/linux_centos7_x86_64/python/include/python3.7m/Python.h /home/ubuntu/miniconda3/pkgs/python-3.8.5-h7579374_1/include/python3.8/Python.h /home/ubuntu/miniconda3/pkgs/python-3.7.0-h6e4f718_3/include/python3.7m/Python.h /home/ubuntu/miniconda3/include/python3.8/Python.h /home/ubuntu/miniconda3/envs/sim/include/python3.7m/Python.h /home/ubuntu/src/blender-deps/Python-3.7.7/Include/Python.h /opt/lib/python-3.7.7/include/python3.7m/Python.h

Luego, puede establecer un indicador de compilador que gcc utilizará cuando lo llame pip. El mío era /home/ubuntu/workspace/blender-git/lib/linux_centos7_x86_64/python/include/python3.7m/Python.h, así que lo hice:

 export CPPFLAGS=-I/home/ubuntu/src/blender-deps/Python-3.7.7/Include pip install <package>
over 4 years ago · Santiago Trujillo Relatório

0

Estoy en Ubuntu . Instalé todos los paquetes como se recomendó en algunas respuestas.

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

Todavía tenía este problema, la línea:

 #include "Python.h"

Y algunos otros, los puedo editar manualmente, es una mala práctica. Ahora sé el secreto, proviene del código fuente de Cython . tengo el archivo Compila sin errores. Ese es el archivo. Cambie PYTHON a la versión de Python que tiene, python/python3. Cambie ARCHIVO a su nombre de archivo c. El nombre del archivo MAKE debe ser Makefile . Ejecute el archivo con el comando:

 make all

Makefile para crear nuestro programa Cython independiente

 FILE := file.c PYTHON := python3 PYVERSION := $(shell $(PYTHON) -c "import sys; print(sys.version[:3])") PYPREFIX := $(shell $(PYTHON) -c "import sys; print(sys.prefix)") INCDIR := $(shell $(PYTHON) -c "from distutils import sysconfig; print(sysconfig.get_python_inc())") PLATINCDIR := $(shell $(PYTHON) -c "from distutils import sysconfig; print(sysconfig.get_python_inc(plat_specific=True))") LIBDIR1 := $(shell $(PYTHON) -c "from distutils import sysconfig; print(sysconfig.get_config_var('LIBDIR'))") LIBDIR2 := $(shell $(PYTHON) -c "from distutils import sysconfig; print(sysconfig.get_config_var('LIBPL'))") PYLIB := $(shell $(PYTHON) -c "from distutils import sysconfig; print(sysconfig.get_config_var('LIBRARY')[3:-2])") CC := $(shell $(PYTHON) -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('CC'))") LINKCC := $(shell $(PYTHON) -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LINKCC'))") LINKFORSHARED := $(shell $(PYTHON) -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LINKFORSHARED'))") LIBS := $(shell $(PYTHON) -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'))") SYSLIBS := $(shell $(PYTHON) -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('SYSLIBS'))") .PHONY: paths all clean test paths: @echo "PYTHON=$(PYTHON)" @echo "PYVERSION=$(PYVERSION)" @echo "PYPREFIX=$(PYPREFIX)" @echo "INCDIR=$(INCDIR)" @echo "PLATINCDIR=$(PLATINCDIR)" @echo "LIBDIR1=$(LIBDIR1)" @echo "LIBDIR2=$(LIBDIR2)" @echo "PYLIB=$(PYLIB)" @echo "CC=$(CC)" @echo "LINKCC=$(LINKCC)" @echo "LINKFORSHARED=$(LINKFORSHARED)" @echo "LIBS=$(LIBS)" @echo "SYSLIBS=$(SYSLIBS)" $(FILE:.c=): $(FILE:.c=.o) $(LINKCC) -o $@ $^ -L$(LIBDIR1) -L$(LIBDIR2) -l$(PYLIB) $(LIBS) $(SYSLIBS) $(LINKFORSHARED) $(FILE:.c=.o): $(FILE) $(CC) -c $^ -I$(INCDIR) -I$(PLATINCDIR) all: $(FILE:.c=)
over 4 years ago · Santiago Trujillo Relatório

0

La situación que encontré es mi Python.h en el directorio /usr/include/python3.8 y /usr/include/python2.7 , simplemente proporcione la ruta a gcc como -I /usr/include/python3.8 。python's versión reemplace con la suya。

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda