Compilar extensiones para windows

Chema Cortes py en ch3m4.org
Lun Jun 19 14:11:37 CEST 2006


Luis Miguel Morillas escribió:

>> Si eso va a ser lo mejor. Otra posibilidad puede ser usar Mingw, que
>> creo que en las últimas versiones va muy bien con Python (y en
>> particular con Python 2.4).
>>
> 
> Eso es lo que he hecho al final. En 5 minutos tenía instalado el mingw
> y compilada la extensión.

No es que haya hecho muchas cosas, pero para compilar el módulo syck
(parser de YAML) usé cygwin en compatibilidad con mingw y me fue de
maravilla. No hace falta recompilar python; tan sólo sacar algunos
ficheros para importación de referencias. Lo tenía todo más o menos
documentado, pero las desgracias nunca vienen sólas. A la caída bestial
de mi servidor web, se une ahora el fallo general del disco duro de mi
pc. Necesitaré mucho tiempo antes de volver a tener toda la
documentación recuperada.

Por si te sirve, te comento los pasos a dar:

1) instalar cygwin (http://www.cygwin.com/setup.exe). Añadir
c:\cygwin\bin al PATH

2) instalar pexports
(http://www.emmestech.com/software/cygwin/pexports-0.43/pexports-0.43.zip).
Descomprimirlo en c:\cygwin\bin

3) crear los archivos de importación "libpython24.a" y "libmscvr71.a".
Estos archivos son necesarios para el linkado. Abrir una terminal de
msdos y seguir estos pasos:

  cd c:\windows\system32
  pexports python24.dll > python24.def
  dlltool -d python24.def -D python24.dll -l libpython24.a
  move libpython24.a c:\Python24\libs

  cd c:\Python24
  pexports msvcr71.dll > msvcr71.def
  dlltool -d msvcr71.def -D msvcr71.dll -l libmsvcr71.a
  move libmsvcr71.a libs



Al usar el compilador de cygwin hay que definir la variable de entorno
CFLAGS=-mno-cygwin . Por ejemplo, para compilar el módulo syck yo hacía
lo siguiente desde la carpeta donde estaban descomprimidos los fuentes:

  bash configure CFLAGS=-mno-cygwin
  make

Para usar distutils hay que tener la precaución de tener que el python
de cygwin no se ejecute antes del de windows (se puede quitar el del
cygwin sin problemas para compilar). La ejecución sería así:

  python setup.py build --compiler=mingw32 install


En cuanto al .Net SDK, hace falta configurar algunas variables del
entorno que vienen definidas en el fichero "sdkvars.bat". Por si os
sirve de álgo, el script con el que lanzaba el entorno .Net era éste:


@echo off
echo --
echo *** Initiating Microsoft .Net SDK... ***
echo --
title "Microsoft .Net SDK"
call "%ProgramFiles%\Microsoft.NET\SDK\v1.1\Bin\sdkvars.bat"
SET PATH=%PATH%;%ProgramFiles%\Nant\bin;%ProgramFiles%\boo\bin
chcp 1252


Como se ve, tenía instalado nant y boo. Nant es casi imprescindible si
váis a hacer desarrollos en .Net/mono . El último comando era para que
la terminal me pusiera los acentos correctamente.

Lamentablemente, no puedo dedicarme ahora a probar la compilación del
amara. Si tienes alguna consulta, ya sabes donde encontrarme.

Un saludo,
-- 
Chema Cortés (py en ch3m4.org)
"Proudly made on earth by generic humanoid carbon units"




Más información sobre la lista de distribución Python-es