我有一個編寫在python 2.7
中的應用程序。在我的應用程序中,我想讓用戶能夠編譯一個python源文件(即py
到pyc
)。編譯爲不同的python版本
內置compile
函數執行此操作,但輸出文件僅與python 2.7
兼容。
我要的是該文件編譯成各種不同的Python版本(特別是蟒蛇2.5
,2.6
& 2.7
)
我知道,解決這個問題的方法是重新寫在我的每一個應用這些版本,只是使用內置的compile
功能,但我不想這樣做。
我向所有人開放的建議,包括編寫C擴展,內嵌Python等..
編輯
,我正在寫的應用程序是一個工具,它允許注入/修改任意代碼裏面一個pyinstaller exe文件。
現在你可能已經知道pyinstaller實際上把編譯好的python源文件放在exe文件中。 我的應用程序只是提取這些嵌入式pyc文件,反編譯它們,允許用戶修改它們,然後重新生成exe文件。
由於exe可以來自不同的python版本,所以我需要將反編譯的輸出編譯爲該版本的功能。
下面是該應用程序的屏幕截圖。
爲什麼你需要這樣做?如果你使用像pip這樣的Python安裝工具,那麼在安裝時就已經完成了。如果在導入時有寫權限,那麼Python在運行代碼時會自動執行此操作。 –
而內建的'compile()'函數不會產生'.pyc'文件。您可以使用['compileall'模塊](http://docs.python.org/2/library/compileall.html)讓Python爲整個目錄或單個文件生成這些文件。例如,只需使用'python-2.5 -m compileall/path/to/project'就可以使用Python 2.5解釋器。 –
'pyinstaller'用特定的Python版本**安裝代碼**。有**不需要**在那裏預編譯。 –