python cython

python - Cython: no se puede abrir el archivo de inclusión: ''io.h'': no existe tal archivo o directorio



numba (7)

Apenas empezando a aprender cython. Estaba tratando de compilar 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 vino.

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


Agregue Windows 10 SDK en su ruta de entorno.

C: / Archivos de programa (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


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 ++


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 que el compilador 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/<version>/ucrt . Para diferentes versiones / entornos, la ubicación de io.h puede diferir.


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 programa de este tipo en el Menú de Inicio y 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 compilació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 sean 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? Necesitas agregar los directorios de la 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


Microsoft no hace ningún esfuerzo para que los pasos de desarrollo de la consola sean obvios. Visual Studio lleva mucho tiempo empaquetado con algunos archivos por lotes para establecer variables de entorno. Cuando las opciones de desarrollo de la CLI de C ++ se seleccionan 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.


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 ++.


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