tutorial python windows python-2.7 cython python-extensions

python - tutorial - cython youtube



Ejecutando Cython en Windows x64-error fatal C1083: No se puede abrir el archivo de inclusión: ''basetsd.h'': No existe tal archivo o directorio (4)

He intentado instalar Cython para Python 2.7 en mi sistema de Windows 7. En particular, prefiero todo en 64 bits. (En caso de que se pregunte, necesito Cython porque Cython es uno de los componentes que necesito para otro paquete para algunos análisis numéricos especializados. Y x64 es potencialmente una ventaja para el almacenamiento de grandes conjuntos de datos).

Así que descargué el x64 Python 2.7 del sitio web oficial. Tienes Cython de Christoph Gohlke . La versión amd64 para Python 2.7 por supuesto. Antes de instalar, agregué Python 2.7 en el registro con el archivo .reg que se encuentra en la respuesta de Joe DF aquí . Después, instalé el compilador de Visual C ++ desde here (no creo que funcione) y here (pero este debería ser). En este punto, tengo en mi directorio C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin todos vcvars32.bat , vcvars64.bat , vcvars86_amd64.bat , vcvarsx86_ia64.bat . vcvars64.bat y no había ningún mensaje de error.

Posteriormente, seguí esta página para crear un archivo de prueba "hello world".

Entonces, obtuve este error.

.../Tests>python setup.py build_ext --inplace running build_ext building ''hello'' extension error: Unable to find vcvarsall.bat

Así que pensé: bueno, Cython no puede encontrar ese archivo porque no existe. (Busqué todo mi disco duro). Así que copié vcvars64.bat de .../VC/bin a /VC y cambié el nombre a vcvarsall.bat . Ahora el error vcvarsall se ha ido. Y ... naturalmente, surge un nuevo error.

.../Tests>python setup.py build_ext --inplace running build_ext building ''hello'' extension C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/BIN/amd64/cl.exe /c /nolog o /Ox /MD /W3 /GS- /DNDEBUG -IC:/Python27/include -IC:/Python27/PC /Tchello.c /F obuild/temp.win-amd64-2.7/Release/hello.obj hello.c C:/Python27/include/pyconfig.h(227) : fatal error C1083: Cannot open include fil e: ''basetsd.h'': No such file or directory error: command ''"C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/BIN/amd64 /cl.exe"'' failed with exit status 2

Ahora no tengo idea de cómo proceder. ¿Que debería hacer? Su ayuda es muy apreciada.

(Para mayor claridad, intenté configurar el compilador para Mingw32. Pero hay otros errores. Me estoy concentrando en lograr que VC funcione por ahora).

EDITAR: Intenté usar el entorno de construcción SDK CMD siguiendo las instrucciones en esta página . Recibí el mismo error.


En caso de que alguien actualmente (2017) enfrente el mismo error con las herramientas visuales de C ++ 2015, inicie la configuración nuevamente y también seleccione Windows 8.1 / 10 SDK dependiendo de su sistema operativo. Esto arreglará el error basestd.h

Si aún no funciona, intente iniciar herramientas de compilación desde: C: / Archivos de programa (x86) / Microsoft Visual C ++ Build Tools.

Otra alternativa sería instalar Anaconda 2 o 3 (64 bit si no desea errores de memoria). Contiene todos los paquetes importantes preconstruidos: sklearn, matplotlib, scipy, numpy, pandas e incluso frameworks de desarrollo web como matraz.


Encontré este problema al intentar instalar pandas en modo ''desarrollar''. Estoy listo y corriendo ahora. Mi entorno:

  • Windows XP Pro x64 SP2
  • WinPython 64bit 2.7.5.3 (Python 2.7.5.amd64) <-- "registrado" como la distribución de Python del sistema usando la aplicación del Panel de Control de WinPython

Problemas encontrados al ejecutar python setup.py develop :

  • No se pudo encontrar vcvarsall.bat
  • error fatal C1083: No se puede abrir el archivo de inclusión: ''basetsd.h'': No existe dicho archivo o directorio ... código de salida 2

Solución:

  1. Download e instale Microsoft Visual C ++ 2008 Express.
  2. here e instale Microsoft Windows SDK para Windows 7 y .NET Framework 3.5 SP1. Necesitarás solo:
    • Herramientas del desarrollador> Encabezados y bibliotecas de Windows <-- esto le da basetsd.h
    • Herramientas del desarrollador> Compiladores de Visual C ++ <-- esto le da los compiladores de 64 bits
  3. Copie C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin/vcvars64.bat a C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin/amd64/vcvarsamd64.bat . Observe el cambio en el nombre del archivo.
  4. Agregue C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin a PATH . Esto puede no ser necesario (lo hice antes de volver a instalar el SDK con Headers & Libs, por lo tanto, se desconoce la necesidad).

En este punto, ejecutar python setup.py develop completado con éxito y python -c "import pandas; print pandas.__version__" dio como resultado la etiqueta git que esperaba.

[EDITAR] Lectura adicional:

  • error: no se puede encontrar vcvarsall.bat
    • responde si solo quieres instalar binarios
    • responde si quieres compilar en máquina x64
    • respuesta sobre la ubicación del archivo / cambio de nombre
  • cuestión distutils 7511

Para aquellos con Windows 10, descargue el SDK desde here para corregir el archivo de encabezado basestd.h .

Descargué el .exe, lo instalé y funcioné muy bien. SDK era ~ 2.3GB.

Nota: Para aquellos como yo con sistemas de 64 bits que obtuvieron un error adicional:

`LINK : fatal error LNK1158: cannot run ''rc.exe'' error: command ''C://Program Files (x86)//Microsoft Visual Studio 14.0//VC//BIN//x86_amd64//link.exe'' failed with exit status 1158

Aquí hay una gran respuesta que resuelve el problema colocando el archivo rc.exe en la carpeta correcta para su sistema.


Para sugerencias, puede probarlo para construir cython 64 bit con setup.py

Estoy usando Anaconda para la distribución de Python, Windopws SDK 7 de Microsoft y MSVC 12.0.

En primer lugar, hago la biblioteca para mi función cuda. ​​Segundo, ejecuto python setup.py build_ext -i para la carpeta make temp (obtendrá un error), luego compilo Makefile a continuación,

Principalmente, obtengo esto de setup.py cuando compila la aplicación de 32 bits, luego la cambio para compilar 64 bit.

Makefile

CL_EXE = "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/amd64/cl.exe" LINK_EXE = "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/amd64/link.exe" CL_FLAGS = /c /nologo /Ox /MD /W3 /GS- /DNDEBUG /O2 /fp:fast CL_INC = -I. -I"C:/Program Files/Microsoft SDKs/Windows/v7.1/Include" / -I"C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/include" -IC:/Users/name/Anaconda2/envs/py27/Lib/site-packages/numpy/core/include -IC:/Users/name/Anaconda2/envs/py27/include -IC:/Users/name/Anaconda2/envs/py27/PC LINK_FLAGS = /DLL /nologo /INCREMENTAL:NO /MACHINE:X64 LINK_LIBPATH = "/LIBPATH:C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v7.5/lib/x64" / /LIBPATH:C:/Users/name/Anaconda2/envs/py27/libs / /LIBPATH:C:/Users/name/Anaconda2/envs/py27/PCbuild/amd64 / /LIBPATH:C:/Users/name/Anaconda2/envs/py27/PC/VS9.0/amd64 / "/LIBPATH:C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/lib/amd64" / "/LIBPATH:C:/Program Files/Microsoft SDKs/Windows/v7.1/Lib/x64" LINK_LIB = cuda_multiply4D.lib cudart.lib MSVCRT.lib kernel32.lib LINK_EXPORT = /EXPORT:initmy_cuda LINK_OBJ = build/temp.win-amd64-2.7/Release/my_cuda.obj LINK_OUT = "/OUT:E:/my_cuda.pyd" LINK_OTHER_CONF = /IMPLIB:build/temp.win-amd64-2.7/Release/my_cuda.lib /MANIFESTFILE:build/temp.win-amd64-2.7/Release/my_cuda.pyd.manifest all: $(CL_EXE) $(CL_FLAGS) $(CL_INC) /Tcmy_cuda.c /Fobuild/temp.win-amd64-2.7/Release/my_cuda.obj $(LINK_EXE) $(LINK_FLAGS) $(LINK_LIBPATH) $(LINK_LIB) $(LINK_EXPORT) $(LINK_OBJ) $(LINK_OUT) $(LINK_OTHER_CONF)

Nota:

  • MSVCRT.lib kernel32.lib son opcionales,
  • / EXPORT: initmy_cuda es obligatorio. Su formato init% yourfilename_WO_Ext%
  • "/OUT:E:/my_cuda.pyd" para determinar su ubicación de salida, su nombre de archivo y su extensión.