Cython può compilare in un exe?
-
24-09-2019 - |
Domanda
So quale sia lo scopo dei cythons. È per scrivere estensioni C compilabili in un linguaggio simile a Python per produrre accelerazioni nel tuo codice. Quello che vorrei sapere (e non riesco a trovare usando il mio Google-Fu) è se Cython può in qualche modo compilare in un formato eseguibile poiché sembra già abbattere il codice Python in C.
Uso già Py2exe, che è solo un packager, ma sono interessato a usarlo per compilare qualcosa che è un po 'più difficile da disimballare (tutto ciò che è pieno usando py2exe può praticamente essere estratto usando 7zip che non voglio)
Sembra se questo è non Possibile la mia prossima alternativa sarebbe solo quella di compilare tutto il mio codice e caricarlo come modulo e quindi impacchettare che utilizzando Py2exe almeno più del mio codice in forma compilata, giusto?
Soluzione
In preside sembra essere possibile fare qualcosa di simile a quello che vuoi, secondo il Incorporare Pyrex Howto. (Pyrex è effettivamente una generazione precedente di Cython.)
Hmm ... quel nome suggerisce una ricerca migliore di quella che ho provato per la prima volta: "incorporare cython" porta a questa pagina che suona come quello che vuoi.
Altri suggerimenti
Ecco la pagina wiki sull'incorporamento di Cython
Supponendo che tu abbia installato Python a C:\Python31
E vuoi utilizzare il compilatore Microsoft.
smalltest1.py
- È il file che si desidera compilare.
test.exe
- Nome dell'eseguibile.
È necessario impostare le variabili ambientali per 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
Ho usato correttamente Cython & GCC per convertire il file *.py in *.exe, con il file batch sotto:
# build.bat
set PROJECT_NAME=test
set PYTHON_DIR=C:\python27
%PYTHON_DIR%\python -m cython --embed -o %PROJECT_NAME%.c %PROJECT_NAME%.py
gcc -Os -I %PYTHON_DIR%\include -o %PROJECT_NAME%.exe %PROJECT_NAME%.c -lpython27 -lm -L %PYTHON_DIR%\libs
La risposta di Aftershock è positiva, quello che voglio dire riguarda l'app Run senza console. La maggior parte come la scossa di assestamento, la risposta, se si desidera eseguire l'applicazione senza console, sono importanti due punti:
Sostituire tutta la funzione principale () nel file ".c" realizzato da "cython --mbed" con wMain ();
ADD /LINK /SUSSYMEM: Windows /Voce: WMaincrtStartup alla fine del comando "Cl.exe ...".