27

(或者,“PyPy/RPython 可以在不需要 Python 运行时的情况下将Python 编译/翻译成 C/C++吗?”)

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

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

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


1 (自从询问以来,情况变得更加清晰,工具链的这一部分被更清楚地标记为 RPython 而不是 PyPy;在 2010 年并非如此。)

4

1 回答 1

18

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

于 2010-11-23T07:18:21.447 回答