2010-11-23 21 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。

相關問題