2010-04-05 2 views
39

Я знаю, что такое цель Китонов. Это написать компилируемые расширения C на языке, подобном Python, чтобы создавать ускорения в вашем коде. То, что я хотел бы знать (и, похоже, не могу найти с помощью моего google-fu), - это то, что Cython может каким-то образом скомпилировать в исполняемый формат, поскольку он уже, кажется, разбивает код python на C.Может ли Cython скомпилировать EXE?

Я уже использую Py2Exe , который является всего лишь упаковщиком, но я заинтересован в том, чтобы его скомпилировать до чего-то, что немного сложнее распаковать (все, что упаковано с использованием Py2EXE, можно в основном просто извлечь, используя 7zip, который я не хочу)

Кажется, это не Возможно, моя следующая альтернатива просто заключается в том, чтобы скомпилировать весь мой код и загрузить его в виде модуля, а затем пакет, который использует py2exe по крайней мере, получить самый моего кода в скомпилированную форму, не так ли?

ответ

28

В принципе, возможно, что-то похожее на то, что вы хотите, согласно Embedding Pyrex HOWTO. (Pyrex фактически является предыдущим поколением Cython.)

Хмм ... это название предлагает лучший поиск, чем я сначала пробовал: «Встраивание cython» приводит к this page, который звучит так, как вы хотите.

+5

См. Мой пример того, как сделать это [здесь] (http://stackoverflow.com/a/22040484/2198548) для системы Linux. –

38

Here's the wiki page on embedding cython

Предполагая, что вы установили питона C:\Python31 и вы хотите использовать Microsoft Compiler.

smalltest1.py - это файл, который вы хотите скомпилировать.

test.exe - название исполняемого файла.

Вам необходимо установить переменные среды для 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 
+0

Уор, он работает очень хорошо. В конце. .exe-файл действительно крошечный. Это действительно 'cython2exe', похожее на' py2exe'! Можем ли мы сделать сценарий, который делает это автоматически (адаптироваться к текущей версии Python и т. Д.)? Какие файлы нам нужны для отправки с этим .exe? – Basj

+0

Как изменить это, чтобы не иметь консольное приложение, а скорее приложение Windows с графическим интерфейсом (не требуется черное окно консоли)? Я попробовал '/ SUBSYSTEM: WINDOWS' вместо этого, но' unresolved external symbol _WinMain @ 16' error ... – Basj

+0

Я получаю ошибки 'ignoring unknown option/main.c',' Отсутствует исходное имя файла' –

 Смежные вопросы

  • Нет связанных вопросов^_^