2014-02-25 75 views
14

是否有可能建立一個PyInstaller使用pypy作爲解釋器的單二進制或單目錄包?PyPy和PyInstaller

要做什麼特別的技巧?

一些替代PyInstaller

如果沒有,基本技術原因是什麼?

說明爲什麼/如何pyinstaller不pypy不開箱:(的distutils |)

  • distutils.sysconfig.get_config_h_filename失蹤,固定在樹幹pytinstaller
  • SYSCONFIG(。 _ |)get_makefile_filename失蹤,實際上是可選的
  • 嘗試在單一的可執行鍼對libpython2.7.so.1鏈接,pypy,而不是共享對象
+0

P.S.我也打開二進制修補工具(alin到'LD_PRELOAD',但導致單個庫),如果有人可以進行演示:) –

+0

A [list](http://www.freehackers.org/Packaging_a_python_program)替代方案到'PyInstaller' – VivienG

+0

謝謝,@VivienG,遺憾的是沒有人聲稱支持'pypy'。 –

回答

7

我已經嘗試了這一點,它失敗了,馬在某些情況下,因爲PyPy只能使用CPython使用的幾個子集。 PyInstaller是一個全面的CPython應用程序,因此無法進行通信。

如果您需要改進速度並將代碼隱藏起來,您可以嘗試使用Cython。我使用了Cython和PyInstaller,我非常喜歡他們的跨平臺特性。

當你完成了兩者,你可以使用PyInstaller & CPython打包你的應用程序。

+1

好點,雖然pyinstaller上的大部分都是純粹的python,但在用戶應用程序構建時運行,還有'bootloader'。快速檢查表明,它主要是針對CPython內部的簡單C級鉤子的集合,但也有一些複雜的東西,運行時buinding解釋器內置類型,按需解包用戶的py/pyc/pyo文件。 –

+1

你說得對。我儘可能多地嘗試,以便在緊張的時間內交付時避免這些問題。這就是爲什麼我使用我上面爲您概述的方法。 – iChux