2010-11-23 22 views
23

(或者, “能PyPy/RPython用来编译/翻译的Python到C/C++ 而不需要Python运行时?”)可以使用PyPy/RPython来生成一个小的独立可执行文件吗?

我试图理解PyPy其RPython和Python的,它的运行编译和翻译,有些失败。

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

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


(因为问的时候,形势变得清晰,工具链的这一部分更清晰地冠以RPython而非PyPy;它不是那么2010年)

+1

这几乎肯定不会产生一个尽可能小的可执行文件,但由于它的相关性,我想我会指出,cython声称它现在可以构建独立的可执行文件:http://wiki.cython.org/EmbeddingCython – 2010-11-23 02:06:41

+0

@Forest:我没有意识到Cython可以做到这一点,但由于需要Python运行时,我认为它不太可能得到任何(或至少很多)比py2exe + UPX小。 – 2010-11-23 02:12:07

回答

17

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

相关问题