Cython: no se puede abrir el archivo de inclusión: ‘io.h’: no ​​existe tal archivo o directorio

Apenas empezando a aprender cython. Estaba tratando de comstackr un simple archivo .pyx.

print("hello") 

Aquí está mi setup.py:

 from distutils.core import setup from Cython.Build import cythonize setup( ext_modules = cythonize("hello.pyx") ) 

Entonces ejecuto el comando.

 python setup.py build_ext --inplace 

El error de la siguiente manera. Me ha costado buscarlo en Google y nada útil me ha llegado.

  running build_ext building 'hello' extension C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -IC:\Users\Jackie\AppData\Local\Continuum\Anaconda3\include -IC:\Users\Jackie\AppData\Local\Continuum\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\wdf\ucrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\shared" "-IC:\Program Files (x86)\Windows Kits\8.1\include\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\winrt" /Tchello.c /Fobuild\temp.win32-3.5\Release\hello.obj hello.c c:\users\jackie\appdata\local\continuum\anaconda3\include\pyconfig.h(68): fatal error C1083: Cannot open include file: 'io.h': No such file or directory error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\cl.exe' failed with exit status 2 

¿Puede alguien ayudarme a resolver el error, por favor?

Tengo Anaconda3 4.1.1, Python 3.5 y Visual Studio Express 2015 instalados.

Es realmente frustrante …

En caso de que alguien encuentre este hilo y busque una solución más rápida que reinstalar VS y / o Anaconda, pude superar este mismo error al definir la variable de entorno INCLUIR que apunta a la ubicación de io.h, lo que permite al comstackdor de VS Localiza el encabezado.

En mi configuración, utilizando VS2015, el cambio de usar CRT universal significa que la ubicación de io.h es C:\Program Files (x86)\Windows Kits\10\Include\\ucrt . Para diferentes versiones / entornos, la ubicación de io.h puede diferir.

Descargar Visual Studio Build Tools e instalar

  1. Visual C ++ Construye las características principales de las herramientas.
  2. Conjunto de herramientas VC ++ 2017 v141 (x86, x64)
  3. Actualización redistribuible de Visual C ++ 2017
  4. Windows 10 SDK (10.0.16299.0) para Desktop C ++

introduzca la descripción de la imagen aquí

Microsoft no hace ningún esfuerzo para que los pasos de desarrollo de la consola sean más obvios. Visual Studio siempre ha sido empaquetado con algunos archivos por lotes para establecer variables de entorno. Cuando se seleccionan las opciones de desarrollo de la CLI de C ++ en VS2015 / 2017, hay uno o más accesos directos agregados al menú de inicio para ejecutar estos archivos por lotes.

Para VS 2017 los varios archivos por lotes todos llaman:

 C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\vcvarsall.bat 

Con parámetros específicos.

En lugar de establecer una Variable de entorno del sistema o del usuario, sería mejor llamar al archivo por lotes específico para satisfacer sus necesidades de construcción.

 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat 

o

 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat 

Una cosa a tener en cuenta con Python / Ruby / etc, los scripts a menudo necesitarán elevar el shell de ejecución al rol de Administrador para instalar paquetes. Si ejecuta el archivo por lotes en un shell que no es de administrador, y la instalación del paquete requiere una elevación, generará un subshell que no tendrá las variables de entorno. Por lo tanto, debe ejecutar el archivo por lotes en un shell del Administrador antes de llamar al administrador de paquetes o al script.

Me encontré con el mismo problema, con una configuración muy similar a la suya (única diferencia: VS 2015 Pro). Después de unas semanas de tener que descargar ruedas de otras personas (por ejemplo, http://www.lfd.uci.edu/~gohlke/pythonlibs/ ) finalmente encontré una solución que funciona para mí.

Hay 2 problemas. Problema 1: debe usar el “Indicador de comando del desarrollador”: a veces hay un progtwig de este tipo en el Menú de Inicio, luego lo usa.

(Por cierto, para otros: Python 3.5 necesita VS2015, no ninguna otra versión. La edición comunitaria está bien)

De lo contrario, puede usar el siguiente fragmento de código (en la línea de comandos):

 "%VS140COMNTOOLS%vsvars32.bat" 

o incluso:

 where cl >nul 2>nul || "%VS140COMNTOOLS%vsvars32.bat" 

(Lo tengo en un archivo por lotes para ejecutar mi entorno de comstackción)

(Si no tiene la variable %VS140COMNTOOLS% , entonces tal vez acaba de instalar el VS y necesita, por ejemplo, reiniciar, para que las nuevas variables de entorno se vuelvan visibles).

Ahora obtendrá el error:

 c:\program files\anaconda3\include\pyconfig.h(68): fatal error C1083: Cannot open include file: 'io.h': No such file or directory error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\cl.exe' failed with exit status 2 

(como en tu respuesta editada)

Así que ahora corre:

 set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt 

OK, ahora obtendrá el error:

 LINK : fatal error LNK1104: cannot open file 'ucrt.lib' error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\link.exe' failed with exit status 1104 

¿Ahora que? Es necesario agregar direcciones de biblioteca:

 set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64 

No hay errores esta vez:

 > dir 05/16/2017 11:33 AM 69,240 hello.c 05/16/2017 11:47 AM 15,872 hello.cp35-win_amd64.pyd 05/16/2017 11:32 AM 17 hello.pyx (...) 

TL; DR – todo el asunto:

 where cl >nul 2>nul || "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" amd64 set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64 python setup.py build_ext --inplace 

Tuve el mismo problema, lo resolví instalando Windows 10 SDK.

Recibí el mismo error al intentar instalar pyshark y resolví este problema ejecutando pip install pyshark en Developer Command Prompty for VS 2017 y asegurándome de que tenía instaladas las herramientas de VC ++.

Agregue Windows 10 SDK en su ruta de entorno.

C: \ Archivos de progtwig (x86) \ Windows Kits \ 10 \ Include \\ ucrt

  1. Aplicar los cambios.
  2. abrir un nuevo símbolo del sistema con derechos de administrador.

el error debe ser eliminado

Si alguien se está metiendo en este error al intentar instalar en Git Bash (me imagino que esto también funcionaría para cualquier shell Bash ejecute en Windows con el comstackdor de Visual Studio ), entonces puede hacer lo siguiente:

 INCLUDE="C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/ucrt/;C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/shared/" \ > LIB="C:/Program Files (x86)/Windows Kits/10/Lib/10.0.17763.0/ucrt/x64;C:/Program Files (x86)/Windows Kits/10/Lib/10.0.17763.0/um/x64" \ > PATH=$PATH:/c/Program\ Files\ \(x86\)/Windows\ Kits/10/bin/10.0.17763.0/x64 \ > python -m pip install  

Para diferentes versiones de Windows y Visual Studio estas rutas pueden ser ligeramente diferentes. La mejor manera de obtenerlos es cuando se produce un error, busque el archivo con

 find /c/Program\ Files\ \(x86\)/ -name