Resuelto - Python.h: No existe tal archivo o directorio en C++

Jay Shaw 15 febrero 2024
  1. Causas del error 'Python.h': No such file or directory en C++
  2. Instalación de Python que permite incrustar su código en C++
  3. Pasos para agregar Python Path a Include y Linker de IDE
  4. Agregue Python Path a Include y Linker
  5. Escribir códigos de Python en C++ y compilarlos
  6. Conclusión
Resuelto - Python.h: No existe tal archivo o directorio en C++

Este artículo explicará cómo solucionar el error 'Python.h': No such file or directory. Esto suele suceder cuando intentamos incrustar código de Python en C++, pero el compilador no puede encontrar una referencia a Python dentro del sistema.

Causas del error 'Python.h': No such file or directory en C++

A continuación se muestra un programa en C++ que utiliza códigos de Python.

#include <Python.h>
#include <conio.h>
#include <stdio.h>

int main() {
  PyObject* pInt;

  Py_Initialize();

  PyRun_SimpleString("print('Hello World from Embedded Python!!!')");

  Py_Finalize();

  printf("\nPress any key to exit...\n");
  if (!_getch()) _getch();
  return 0;
}

Cuando se compila este programa, da el error 'Python.h': No such file or directory.

Build started...
1>------ Build started: Project: Python into Cpp, Configuration: Debug x64 ------
1>1.cpp
1>C:\Users\Win 10\source\repos\Python into Cpp\1.cpp(3,10): fatal error C1083: Cannot open include file: 'Python.h': No such file or directory
1>Done building project "Python into Cpp.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Varias razones causan el problema 'Python.h': No such file or directory.

  1. Python no está instalado dentro del sistema.

    Python es un software empresarial de terceros que no viene con la instalación estándar de los compiladores de Windows y C++. Debe instalarse con la configuración correcta y vinculado al compilador de C++.

  2. El compilador de C++ no puede encontrar Python.

    Si el compilador se ejecuta a través de un IDE o mingw4, solo puede detectar que C++ estándar incluye paquetes que vienen con una instalación estándar.

    Es necesario agregar bibliotecas de terceros a los archivos IDE include y linker.

    Se deben ejecutar tres pasos para resolver los problemas anteriores.

    1. Instalación personalizada de Python que permite integrarlo en IDE.
    2. Agregar la ruta de Python al IDE incluir y las rutas del enlazador.
    3. Escribir códigos Python dentro de códigos C++ y compilarlos.

Instalación de Python que permite incrustar su código en C++

Si no hay Python dentro del sistema, o si está instalado y vinculado pero aún aparece el error 'Python.h': No such file or directory, es porque la instalación de Python no descargó los binarios de depuración con él.

Se recomienda desinstalar Python y luego reinstalarlo correctamente para solucionar el error 'Python.h': No such file or directory.

Dirígete al sitio web de Python y descarga la última versión de Python. Si se requiere una determinada versión, diríjase a la sección Todos los lanzamientos descargar.

Este artículo muestra los pasos en el sistema operativo Windows, por lo que la opción adecuada es ir con el instalador de Windows (64 bits o 32 bits). Se recomienda usar la versión de 64 bits si se usa una PC moderna.

Una vez completada la descarga, ejecute el instalador y elija Personalizar instalación. La opción Instalar ahora instalará Python con la configuración predeterminada, pero dejará fuera los binarios de depuración que permiten incrustarlo en los IDE.

Marque la casilla que pide Agregar Python X.X (versión) a PATH y luego haga clic en Personalizar instalación.

Personalizar instalación

En la página siguiente, marque todas las casillas y luego haga clic en siguiente.

Características opcionales

En el tercer menú, marque la casilla Descargar archivos binarios de depuración y haga clic en Instalar. Python se instalará dentro del directorio seleccionado.

Bibliotecas de depuración

Pasos para agregar Python Path a Include y Linker de IDE

Cualquier biblioteca de terceros que no venga con C++ en su instalación estándar debe estar referenciada al IDE. Los IDE no pueden buscar y detectar automáticamente bibliotecas de terceros dentro del sistema.

Esta es la razón que provoca el error 'Python.h': No such file or directory.

Aunque IDE puede buscar archivos cuando la biblioteca de paquetes se almacena en el mismo directorio donde se encuentra el script de C++, su ruta debe mencionarse dentro del encabezado #include<> del programa.

Pero almacenar dependencias de esta manera es una mala práctica.

Lo que debe hacerse es vincular la ruta de la biblioteca al IDE para que pueda incluirse de la misma forma que se incluyen los archivos de encabezado estándar, eliminando la necesidad de proporcionar una ruta de archivo con el código fuente.

Cualquier biblioteca de terceros que no venga con C++ en su instalación estándar debe estar referenciada al IDE. Los IDE no pueden buscar y detectar automáticamente bibliotecas de terceros dentro del sistema.

Esta es la razón que provoca el error 'Python.h': No such file or directory.

Al principio, se necesita un IDE. Se recomienda usar Visual Studio (2017 o posterior), y este artículo cubrirá lo mismo.

También se puede usar cualquier otro IDE, los pasos son idénticos en la mayoría de ellos, pero Visual Studio lo hace simple.

Instalar Visual Studio en el sistema

El instalador de Visual Studio se puede descargar desde aquí. Después de descargar la versión Community de 64 bits, instale el software, incluida la opción de desarrollo C++.

Una vez completada la instalación, cree un nuevo proyecto.

La ventana puede parecer intimidante para los lectores que nunca antes han usado Visual Studio, pero no hay necesidad de preocuparse. La mayoría de las funciones que se necesitarán están al frente, y este artículo guiará el resto.

Cree un proyecto y asígnele un nombre como ‘Python en cpp’. Después de crear el proyecto, la ventana principal se vería así:

ventana principal

Si solo hay una pantalla negra, presione Ctrl+Alt+l y se abrirá el explorador de soluciones. El explorador de soluciones muestra todos los archivos y dependencias disponibles para el proyecto.

Agregue Python Path a Include y Linker

En este paso, la ruta de Python se incluirá y vinculará a Visual Studio para que el IDE sepa dónde buscar cuando se escribe #include <python.h>.

Un requisito previo para este paso es conocer el directorio donde está instalado Python y mantenerlo abierto en otra ventana. Ahora dirígete a Depuración > Nombre del proyecto > Propiedades (en lugar de Nombre del proyecto, mostrará el nombre del proyecto).

propiedades del proyecto

Dentro de la ventana de propiedades del proyecto, vaya a C/C++ > General > Directorios de inclusión adicionales, haga clic en el pequeño botón desplegable en el extremo derecho y luego haga clic en <Editar...>.

Generalidades de C++

Se abrirá el cuadro de diálogo Directorios de inclusión adicionales. Aquí, haga doble clic en el primer espacio en blanco y pegue la ruta de la carpeta incluir del directorio donde está instalado Python dentro del sistema, luego haga clic en Aceptar.

Directorios de inclusión adicionales

Después de agregar la ruta del directorio include, diríjase a Linker > General > Directorios de bibliotecas adicionales. Al igual que en el paso anterior, haga clic en <Editar...>.

Directorios de bibliotecas adicionales

Ahora, la carpeta libs debe agregarse al enlazador. Esta carpeta también se encuentra dentro del directorio de Python, donde se encuentra la carpeta include.

Después de agregarlo, haga clic en Aceptar y luego haga clic en Aplicar.

Agregar carpeta lib

Escribir códigos de Python en C++ y compilarlos

Una vez que se agregan las rutas include y del enlazador, se debe compilar un programa de muestra para verificar si los pasos anteriores se han ejecutado correctamente, y no se vuelve a encontrar el error 'Python.h': No such file or directory.

Vaya al explorador de soluciones y haga clic con el botón derecho en los archivos de origen. Haga clic en añadir > elemento nuevo, asigne un nombre al archivo y haga clic en añadir.

Este nuevo archivo contendrá el código que será compilado.

A continuación se muestra el programa C++ utilizado al comienzo del artículo que arrojó errores.

#include <Python.h>
#include <conio.h>
#include <stdio.h>

int main() {
  PyObject* pInt;

  Py_Initialize();

  PyRun_SimpleString("print('Hello World from Embedded Python!!!')");

  Py_Finalize();

  printf("\nPress any key to exit...\n");
  if (!_getch()) _getch();
  return 0;
}

Ahora, cuando se compila el archivo haciendo clic en el botón verde de reproducción en la parte superior, obtenemos el resultado:

Hello World from Embedded Python!!!

Press any key to exit...

Conclusión

Este artículo explica los pasos para solucionar el error 'Python.h': No such file or directory. Después de leer este artículo, el lector puede instalar Python y Visual Studio y vincularlos a la biblioteca de Python.

Artículo relacionado - C++ Error