python compilation cython

python - ¿Puede Cython compilar a un EXE?



compilation (3)

En principio, parece ser posible hacer algo como lo que quiere, de acuerdo con Embedding Pyrex HOWTO . (Pyrex es efectivamente una generación anterior de Cython).

Hmm ... ese nombre sugiere una mejor búsqueda de la que primero probé: "embeber cython" lleva a esta página que suena como lo que quieres.

Sé lo que es el propósito de Cythons. Es para escribir extensiones C compilables en un lenguaje Python para producir aceleraciones en tu código. Lo que me gustaría saber (y no puedo encontrar usando mi google-fu) es si Cython puede compilar de algún modo en un formato ejecutable, ya que parece romper el código python en C.

Ya uso Py2Exe, que es solo un paquete, pero estoy interesado en usar esto para compilar algo que es un poco más difícil de desempaquetar (cualquier cosa empaquetada usando Py2EXE básicamente puede extraerse utilizando 7zip que no quiero)

Parece que si esto no es posible, mi próxima alternativa sería simplemente compilar todo mi código y cargarlo como un módulo y luego empacarlo utilizando py2exe al menos obteniendo la mayor parte de mi código en forma compilada, ¿verdad?


La respuesta de Aftershock es buena, lo que quiero decir es acerca de la aplicación de ejecución sin consola. Más que nada como la respuesta de Aftershock, si quieres que tu aplicación se ejecute sin consola, dos puntos son importantes:

  1. reemplace toda la función main () en el archivo ".c" creado por "cython --embed" con wmain ();

  2. add / link / subsystem: windows / entry: wmainCRTStartup al final del comando "cl.exe ...".


Aquí está la página wiki sobre incrustación de cython

Suponiendo que instaló Python en C:/Python31 y desea usar Microsoft Compiler.

smalltest1.py : es el archivo que desea compilar.

test.exe - nombre del ejecutable.

Necesita establecer las variables ambientales para cl .

C:/Python31/python.exe C:/Python31/Scripts/cython.py smalltest1.py --embed cl.exe /nologo /Ox /MD /W3 /GS- /DNDEBUG -Ic:/Python31/include -Ic:/Python31/PC /Tcsmalltest1.c /link /OUT:"test.exe" /SUBSYSTEM:CONSOLE /MACHINE:X86 /LIBPATH:c:/Python31/libs /LIBPATH:c:/Python31/PCbuild