工欲善其事,必先利其器.python是解釋型的語言,但是在windows下如果要執行程序的話還得加個pythonshell的話,未免也太麻煩了.而這里所說的東西就是將python程序轉換為exe文件.下面是一些常用的工具,不過似乎py2exe應用的更加廣泛一些.
py2exehttp://py2exe.sf.net
只支持windows平臺,應該是大家聽到最多的一個名字了,用戶不少,所以有問題的話在它的maillist里面很容易找到答案。文檔中提到了"無法找到某某code"、使用opengl等模塊的問題
PyPackagehttp://codereactor.net/projects/pypack/index.html
我覺得py2exe等等工具還是羅嗦得像唐僧,需要在配置文件中寫上需要的數據文件。作者完全無視這樣一個事實:我需要發布可執行文件的時候,程序已經完工了,所有的數據文件就在主程序所在目錄下,所以多數情況下,根本不用到別的地方搜索。現在終于有人站了出來,PyPackage實際上并不是一個程序打包的工具,而只是簡化py2exe的操作,甚至可以自動調用InnoSetup5制作安裝文件——不過這個軟件并不智能,會打包很多不需要的文件
Installerhttp://www.mcmillan-inc.com/installer_dnld.html
可以產生windows、linux平臺的可執行文件,現在作者主頁連不上去了,但是搜索一下可以在其它地方下載
自帶一個小程序寫配置文件,如果程序較復雜,還是需要手工修改這個配置文件。支持從py15以來的所有Python版本
2005年9月,冰凍牡蠣更新:GiovanniBajo獲得GordonMcMillan'sInstaller的授權、版權改變為GPL,并在http://pyinstaller.hpcf.upr.edu/繼續開發PYinstaller。2006年9月更新:這里可以看到GordonMcMillan's的原始網站的鏡像
Python自帶的freeze.py(不過windows版本不帶這個,你可以自己下載Python的源程序再找)。這個是我最不推薦的一種方法(為什么?自己看),不過如果你的Python程序要發布到其它工具不支持的平臺上,可以考慮這個方法
新出來的Pycohttp://www.pythonapocrypha.com/projects/pyco/
還沒用過
Squeezehttp://starship.python.net/crew/fredrik/ipa/squeeze.htm
還沒用過,只支持Python1.4
cx_Freezehttp://starship.python.net/crew/atuining/cx_Freeze/
winodws、linux平臺。簡單的程序甚至都不需要寫配置文件
StandalonePythonforWindowshttp://arctrix.com/nas/python/standalone.html
如果你不介意源程序太過"暴露"的話,用這個吧
會不會覺得Updated:Sun,09Apr200018:39:54-0600扎眼?如果你看一看它的VC源代碼,就不會這么想了——其實這是普遍適用于win系統的方法,無論是98、2000或者xp。也許也可以用到linux上——我不懂linux,如果真的可以這么做,還請告訴我。
py2apphttp://undefined.org/python/
支持linux平臺的工具可能也支持macos,或者直接使用這個py2app。具體就不知道了,只吃過蘋果,還沒玩過蘋果呢
MovablePythonhttp://www.voidspace.org.uk/python/movpy/
這個其實是使用py2exe制作的、可以放在U盤上的綠色Python。有使用py2app制作蘋果版movpy和用cx_Freeze制作Linux版movpy的計劃。懶到都不愿意學習py2exe、py2app或者cx_Freeze的人可以看看。
ShedSkin-APython-to-C++Compiler:試驗項目,windows上,連他的例子我都沒有編譯成功:(。
Psyco:給Python程序加速的東西,看不出對發布Python程序的直接好處,并且作者以后將致力于PyPy。
PyPy:項目目標是純Python實現的Python、速度比CPython快,將來可以幫助實現編譯Python。
pyc:PythoncompilerinPython,一個用純Python寫的Python的bytecode編譯器,可以優化輸出的pyc文件。和PyPy一樣,現在還看不出對發布Python程序的直接好處。只有py24的bytecode。pyc是pyvm這個新的python虛擬機的一部分。
Jungle:使用GNU工具(as、ld和winres)把Python程序編譯到windows的exe可執行文件。該可執行文件只使用基于python24的的pythonic.dll。猜測它支持的模塊僅限于內部模塊以及jungle.jgl列出的模塊。只有可執行文件下載,而這個可執行文件也是用Jungle自己編譯的。目前版本號都到1.10了,經???.xx的版本號,這個數字好大啊,娃哈哈。
另類的方法,對Python語言特性都還不是100%支持,眾多的CPython模塊也不可以使用,還有,我也沒有試過:
for.NET的Python編譯器(如VisualPython、IronPython),不過我可不喜歡為了一個芝麻大的軟件安裝.NETframework
用jython,然后用jbuilder、jsmooth、NativeJ之類的包裹一下,或者用gcj編譯成本地代碼
在最后,給一個人學習py2exe的文章,幫助學習:
最近學了一點PYTHON,想把PYTHON寫的程序轉換成EXE文件,在網上查到了資料后發現了這個東東
寫下來做一下記錄。
英文教程:
http://www.py2exe.org/index.cgi/Tutorial
Python2.5+Py2exe
工作目錄:c:/python25
首先隨便寫一個程序
hello.py
print"HelloWorld!"
測試一下是否能運行
pythonhello.py
結果:HelloWorld
到www.py2exe.org下載PY2exe,或者在SF上下載
http://sourceforge.net/project/showfiles.php?group_id=15583
接下來直接安裝PY2EXE包。。它是一個安裝文件。。直接裝就行了。
下在編寫一個設置的PY文件 setup.py
fromdistutils.coreimportsetup
importpy2exe
setup(console=['hello.py'])
運行:pythonsetup.pypy2exe
出現以下信息后,在DIST目錄里,就會有一個hello.exe
即成功。
runningpy2exe
***searchingforrequiredmodules***
***parsingresults***
creatingpythonloaderforextension'zlib'
creatingpythonloaderforextension'unicodedata'
creatingpythonloaderforextension'bz2'
***findingdllsneeded***
***createbinaries***
***bytecompilepythonfiles***
byte-compilingC:/Tutorial/build/bdist.win32/winexe/temp/bz2.pytobz2.pyc
byte-compilingC:/Tutorial/build/bdist.win32/winexe/temp/unicodedata.pytounicodedata.pyc
byte-compilingC:/Tutorial/build/bdist.win32/winexe/temp/zlib.pytozlib.pyc
skippingbyte-compilationofc:/Python24/lib/StringIO.pytoStringIO.pyc
[skippingmanylinesforbrevity]
skippingbyte-compilationofc:/Python24/lib/warnings.pytowarnings.pyc
***copyextensions***
***copydlls***
copyingc:/Python24/lib/site-packages/py2exe/run.exe->C:/Tutorial/dist/hello.exe
***binarydependencies***
Yourexecutable(s)alsodependonthesedllswhicharenotincluded,
youmayormaynotneedtodistributethem.
Makesureyouhavethelicenseifyoudistributeanyofthem,and
makesureyoudon'tdistributefilesbelongingtotheoperatingsystem.
ADVAPI32.dll-C:/WINDOWS/system32/ADVAPI32.dll
USER32.dll-C:/WINDOWS/system32/USER32.dll
SHELL32.dll-C:/WINDOWS/system32/SHELL32.dll
KERNEL32.dll-C:/WINDOWS/system32/KERNEL32.dll
新聞熱點
疑難解答