可以使用PyPy / RPython生成一个小的独立可执行文件吗?

时间:2010-11-23 01:41:26

标签: python compiler-construction translate pypy rpython

(或者,“可以使用PyPy / RPython将Python编译/转换为C / C ++ 而不需要Python运行时吗?”)

我试图通过它的RPython及其Python,运行及其编译和翻译来理解PyPy,并且有些失败。

我有一个假设的Python项目(适用于Windows);我想保持它的大小,大约100千字节(O.N.O。)而不是使用py2exe所需的几兆字节(在UPX之后)。我可以以任何方式使用PyPy 1 来生成不依赖于Python26.dll的独立可执行文件吗?如果可以的话,它是否需要遵循像for这样的RPython限制,只处理内置类型,还是完整的Python语法?

我确实意识到如果可以这样做,我几乎肯定不能直接使用Python的C模块。


1 (自提问时起,情况变得更加清晰,工具链的这一部分更明确地被称为RPython而不是PyPy; 2010年情况并非如此。)

1 个答案:

答案 0 :(得分:17)

是的,PyPy可以从RPython代码生成独立的可执行文件。这意味着,在编写代码时,您需要遵循所有尴尬的RPython规则。您的Python代码完全不可能开箱即用,移植现有的Python代码通常并不好玩。它不会使可执行文件像C一样小,但是例如使用boehm GC的rpystone目标(来自pypy / translator / goal)在剥离后在64位上是80k。