Можно ли использовать PyPy / RPython для создания небольшого автономного исполняемого файла? - PullRequest
25 голосов
/ 23 ноября 2010

(или «Можно ли использовать PyPy / RPython для компиляции / перевода Python в C / C ++ без необходимости выполнения Python ?»)

Я пытался понять PyPy с его RPython и его Python, его работой, его компиляцией и его переводом, и что-то не получилось.

У меня есть гипотетический проект Python (для Windows); Я хотел бы уменьшить его размер, порядка ста килобайт (O.N.O.), а не несколько мегабайт, которые использует py2exe (после UPX). Можно ли каким-либо образом использовать PyPy 1 для создания автономного исполняемого файла, который не зависит от Python26.dll? Если я могу, нужно ли соблюдать ограничения RPython, такие как for, работающие только со встроенными типами, или это полный синтаксис Python?

Я понимаю, что если это можно сделать, я почти наверняка не смогу напрямую использовать модули C из Python.


1 (Со времени запроса ситуация прояснилась, и эта часть цепочки инструментов более четко обозначена как RPython, а не как PyPy; в 2010 году так не было )

1 Ответ

17 голосов
/ 23 ноября 2010

Да, PyPy может создавать автономные исполняемые файлы из кода RPython. Это означает, что вам нужно следовать всем неуклюжим правилам RPython, когда речь идет о написании кода. Ваш код Python вряд ли будет функционировать из коробки, и портирование существующего кода Python обычно не доставляет удовольствия. Он не сделает исполняемые файлы такими же маленькими, как C, но, например, для цели rpystone (из pypy / translation / goal), использующей boehm GC, будет 80k на 64-битной версии после удаления.

...