编译为不同的python版本

时间:2014-02-13 15:46:16

标签: python python-2.7 compilation

我有一个用python 2.7编写的应用程序。在我的应用程序中,我想让用户能够编译python源文件(即pypyc)。

内置compile函数执行此操作,但输出文件仅与python 2.7兼容。

我想要的是将文件编译为一系列不同的python版本(特别是python 2.52.6& 2.7

我知道解决这个问题的一种方法是在每个版本中重写我的应用程序,只使用内置的compile函数,但我不想这样做。

我愿意接受所有建议,包括编写C扩展,嵌入python等......

修改

我正在编写的应用程序是一个允许在pyinstaller exe中注入/修改任意代码的工具。

现在您可能知道pyinstaller实际上将已编译的python源文件放在exe中。 我的应用程序只是提取这些嵌入的pyc文件,反编译它们,允许用户修改它们,然后重建exe。

由于exe可以来自不同的python版本,所以我需要将反编译输出编译成该版本的功能。

以下是该应用的截图。

enter image description here

1 个答案:

答案 0 :(得分:1)

我用不同的方法解决了自己的问题。

现在,我的主应用程序是用python 2.7编写的。我写了2 dll,每个都嵌入了python解释器。在一个嵌入式python 2.6和其他python 2.5中。 这两个dll中的每一个都使用Python C API来编译作为相应python版本的参数给出的脚本。

现在,从我的主应用程序(用python 2.7编写),我使用ctypes从这两个dll调用导出的函数。要编译的脚本作为参数传递。

使用这种方法,我能够将给定的脚本编译为3个python版本中的任何一个。