python編程-將Python程序轉(zhuǎn)化為可執(zhí)行程序[整理]
更新時(shí)間:2007年04月09日 00:00:00 作者:
工欲善其事,必先利其器.python是解釋型的語(yǔ)言,但是在windows下如果要執(zhí)行程序的話還得加個(gè)python shell的話,未免也太麻煩了.而這里所說(shuō)的東西就是將python程序轉(zhuǎn)換為exe文件.下面是一些常用的工具,不過(guò)似乎py2exe應(yīng)用的更加廣泛一些.
py2exe http://py2exe.sf.net
只支持windows平臺(tái),應(yīng)該是大家聽(tīng)到最多的一個(gè)名字了,用戶不少,所以有問(wèn)題的話在它的mail list里面很容易找到答案。文檔中提到了"無(wú)法找到某某code"、使用opengl等模塊的問(wèn)題
PyPackage http://codereactor.net/projects/pypack/index.html
我覺(jué)得py2exe等等工具還是羅嗦得像唐僧,需要在配置文件中寫(xiě)上需要的數(shù)據(jù)文件。作者完全無(wú)視這樣一個(gè)事實(shí):我需要發(fā)布可執(zhí)行文件的時(shí)候,程序已經(jīng)完工了,所有的數(shù)據(jù)文件就在主程序所在目錄下,所以多數(shù)情況下,根本不用到別的地方搜索?,F(xiàn)在終于有人站了出來(lái),PyPackage實(shí)際上并不是一個(gè)程序打包的工具,而只是簡(jiǎn)化py2exe的操作,甚至可以自動(dòng)調(diào)用InnoSetup 5制作安裝文件——不過(guò)這個(gè)軟件并不智能,會(huì)打包很多不需要的文件
Installer http://www.mcmillan-inc.com/installer_dnld.html
可以產(chǎn)生windows、linux平臺(tái)的可執(zhí)行文件,現(xiàn)在作者主頁(yè)連不上去了,但是搜索一下可以在其它地方下載
自帶一個(gè)小程序?qū)懪渲梦募?,如果程序較復(fù)雜,還是需要手工修改這個(gè)配置文件。支持從py15以來(lái)的所有Python版本
2005年9月,冰凍牡蠣更新:Giovanni Bajo獲得Gordon McMillan's Installer的授權(quán)、版權(quán)改變?yōu)镚PL,并在http://pyinstaller.hpcf.upr.edu/繼續(xù)開(kāi)發(fā)PYinstaller。2006年9月更新:這里可以看到Gordon McMillan's的原始網(wǎng)站的鏡像
Python自帶的freeze.py(不過(guò)windows版本不帶這個(gè),你可以自己下載Python的源程序再找)。這個(gè)是我最不推薦的一種方法(為什么?自己看),不過(guò)如果你的Python程序要發(fā)布到其它工具不支持的平臺(tái)上,可以考慮這個(gè)方法
新出來(lái)的Pyco http://www.pythonapocrypha.com/projects/pyco/
還沒(méi)用過(guò)
Squeeze http://starship.python.net/crew/fredrik/ipa/squeeze.htm
還沒(méi)用過(guò),只支持Python 1.4
cx_Freeze http://starship.python.net/crew/atuining/cx_Freeze/
winodws、linux平臺(tái)。簡(jiǎn)單的程序甚至都不需要寫(xiě)配置文件
Stand alone Python for Windows http://arctrix.com/nas/python/standalone.html
如果你不介意源程序太過(guò)"暴露"的話,用這個(gè)吧
會(huì)不會(huì)覺(jué)得Updated: Sun, 09 Apr 2000 18:39:54 -0600 扎眼?如果你看一看它的VC源代碼,就不會(huì)這么想了——其實(shí)這是普遍適用于win系統(tǒng)的方法,無(wú)論是98、2000或者xp。也許也可以用到linux上——我不懂linux,如果真的可以這么做,還請(qǐng)告訴我。
py2app http://undefined.org/python/
支持linux平臺(tái)的工具可能也支持mac os,或者直接使用這個(gè)py2app。具體就不知道了,只吃過(guò)蘋(píng)果,還沒(méi)玩過(guò)蘋(píng)果呢
Movable Python http://www.voidspace.org.uk/python/movpy/
這個(gè)其實(shí)是使用py2exe制作的、可以放在U盤(pán)上的綠色Python。有使用py2app制作蘋(píng)果版movpy和用cx_Freeze制作Linux版movpy的計(jì)劃。懶到都不愿意學(xué)習(xí)py2exe、py2app或者cx_Freeze的人可以看看。
Shed Skin - A Python-to-C++ Compiler: 試驗(yàn)項(xiàng)目,windows上,連他的例子我都沒(méi)有編譯成功 :(。
Psyco: 給Python程序加速的東西,看不出對(duì)發(fā)布Python程序的直接好處,并且作者以后將致力于PyPy。
PyPy: 項(xiàng)目目標(biāo)是純Python實(shí)現(xiàn)的Python、速度比CPython快,將來(lái)可以幫助實(shí)現(xiàn)編譯Python。
pyc: Python compiler in Python,一個(gè)用純Python寫(xiě)的Python的bytecode編譯器,可以優(yōu)化輸出的pyc文件。和PyPy一樣,現(xiàn)在還看不出對(duì)發(fā)布Python程序的直接好處。只有py24的bytecode。pyc是pyvm這個(gè)新的python虛擬機(jī)的一部分。
Jungle: 使用GNU工具(as、ld和winres)把Python程序編譯到windows的exe可執(zhí)行文件。該可執(zhí)行文件只使用基于python24的的pythonic.dll。猜測(cè)它支持的模塊僅限于內(nèi)部模塊以及jungle.jgl列出的模塊。只有可執(zhí)行文件下載,而這個(gè)可執(zhí)行文件也是用Jungle自己編譯的。目前版本號(hào)都到1.10了,經(jīng)???.xx的版本號(hào),這個(gè)數(shù)字好大啊,娃哈哈。
另類的方法,對(duì)Python語(yǔ)言特性都還不是100%支持,眾多的CPython模塊也不可以使用,還有,我也沒(méi)有試過(guò):
for .NET的Python編譯器(如Visual Python、IronPython),不過(guò)我可不喜歡為了一個(gè)芝麻大的軟件安裝.NET framework
用jython,然后用jbuilder、jsmooth、NativeJ之類的包裹一下,或者用gcj編譯成本地代碼
在最后,給一個(gè)人學(xué)習(xí)py2exe的文章,幫助學(xué)習(xí):
最近學(xué)了一點(diǎn)PYTHON,想把PYTHON寫(xiě)的程序轉(zhuǎn)換成EXE文件,在網(wǎng)上查到了資料后發(fā)現(xiàn)了這個(gè)東東
寫(xiě)下來(lái)做一下記錄。
英文教程:
http://www.py2exe.org/index.cgi/Tutorial
Python 2.5 + Py2exe
工作目錄:c:\python25
首先隨便寫(xiě)一個(gè)程序
hello.py
print "Hello World!"
測(cè)試一下是否能運(yùn)行
python hello.py
結(jié)果:Hello World
到www.py2exe.org下載 PY2exe ,或者在SF上下載
http://sourceforge.net/project/showfiles.php?group_id=15583
接下來(lái)直接安裝PY2EXE包。。它是一個(gè)安裝文件。。直接裝就行了。
下在編寫(xiě)一個(gè)設(shè)置的PY文件 setup.py
from distutils.core import setup
import py2exe
setup(console=['hello.py'])
運(yùn)行:python setup.py py2exe
出現(xiàn)以下信息后,在DIST目錄里,就會(huì)有一個(gè)hello.exe
即成功。
running py2exe
*** searching for required modules ***
*** parsing results ***
creating python loader for extension 'zlib'
creating python loader for extension 'unicodedata'
creating python loader for extension 'bz2'
*** finding dlls needed ***
*** create binaries ***
*** byte compile python files ***
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\bz2.py to bz2.pyc
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\unicodedata.py to unicodedata.pyc
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\zlib.py to zlib.pyc
skipping byte-compilation of c:\Python24\lib\StringIO.py to StringIO.pyc
[skipping many lines for brevity]
skipping byte-compilation of c:\Python24\lib\warnings.py to warnings.pyc
*** copy extensions ***
*** copy dlls ***
copying c:\Python24\lib\site-packages\py2exe\run.exe -> C:\Tutorial\dist\hello.exe
*** binary dependencies ***
Your executable(s) also depend on these dlls which are not included,
you may or may not need to distribute them.
Make sure you have the license if you distribute any of them, and
make sure you don't distribute files belonging to the operating system.
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
py2exe http://py2exe.sf.net
只支持windows平臺(tái),應(yīng)該是大家聽(tīng)到最多的一個(gè)名字了,用戶不少,所以有問(wèn)題的話在它的mail list里面很容易找到答案。文檔中提到了"無(wú)法找到某某code"、使用opengl等模塊的問(wèn)題
PyPackage http://codereactor.net/projects/pypack/index.html
我覺(jué)得py2exe等等工具還是羅嗦得像唐僧,需要在配置文件中寫(xiě)上需要的數(shù)據(jù)文件。作者完全無(wú)視這樣一個(gè)事實(shí):我需要發(fā)布可執(zhí)行文件的時(shí)候,程序已經(jīng)完工了,所有的數(shù)據(jù)文件就在主程序所在目錄下,所以多數(shù)情況下,根本不用到別的地方搜索?,F(xiàn)在終于有人站了出來(lái),PyPackage實(shí)際上并不是一個(gè)程序打包的工具,而只是簡(jiǎn)化py2exe的操作,甚至可以自動(dòng)調(diào)用InnoSetup 5制作安裝文件——不過(guò)這個(gè)軟件并不智能,會(huì)打包很多不需要的文件
Installer http://www.mcmillan-inc.com/installer_dnld.html
可以產(chǎn)生windows、linux平臺(tái)的可執(zhí)行文件,現(xiàn)在作者主頁(yè)連不上去了,但是搜索一下可以在其它地方下載
自帶一個(gè)小程序?qū)懪渲梦募?,如果程序較復(fù)雜,還是需要手工修改這個(gè)配置文件。支持從py15以來(lái)的所有Python版本
2005年9月,冰凍牡蠣更新:Giovanni Bajo獲得Gordon McMillan's Installer的授權(quán)、版權(quán)改變?yōu)镚PL,并在http://pyinstaller.hpcf.upr.edu/繼續(xù)開(kāi)發(fā)PYinstaller。2006年9月更新:這里可以看到Gordon McMillan's的原始網(wǎng)站的鏡像
Python自帶的freeze.py(不過(guò)windows版本不帶這個(gè),你可以自己下載Python的源程序再找)。這個(gè)是我最不推薦的一種方法(為什么?自己看),不過(guò)如果你的Python程序要發(fā)布到其它工具不支持的平臺(tái)上,可以考慮這個(gè)方法
新出來(lái)的Pyco http://www.pythonapocrypha.com/projects/pyco/
還沒(méi)用過(guò)
Squeeze http://starship.python.net/crew/fredrik/ipa/squeeze.htm
還沒(méi)用過(guò),只支持Python 1.4
cx_Freeze http://starship.python.net/crew/atuining/cx_Freeze/
winodws、linux平臺(tái)。簡(jiǎn)單的程序甚至都不需要寫(xiě)配置文件
Stand alone Python for Windows http://arctrix.com/nas/python/standalone.html
如果你不介意源程序太過(guò)"暴露"的話,用這個(gè)吧
會(huì)不會(huì)覺(jué)得Updated: Sun, 09 Apr 2000 18:39:54 -0600 扎眼?如果你看一看它的VC源代碼,就不會(huì)這么想了——其實(shí)這是普遍適用于win系統(tǒng)的方法,無(wú)論是98、2000或者xp。也許也可以用到linux上——我不懂linux,如果真的可以這么做,還請(qǐng)告訴我。
py2app http://undefined.org/python/
支持linux平臺(tái)的工具可能也支持mac os,或者直接使用這個(gè)py2app。具體就不知道了,只吃過(guò)蘋(píng)果,還沒(méi)玩過(guò)蘋(píng)果呢
Movable Python http://www.voidspace.org.uk/python/movpy/
這個(gè)其實(shí)是使用py2exe制作的、可以放在U盤(pán)上的綠色Python。有使用py2app制作蘋(píng)果版movpy和用cx_Freeze制作Linux版movpy的計(jì)劃。懶到都不愿意學(xué)習(xí)py2exe、py2app或者cx_Freeze的人可以看看。
Shed Skin - A Python-to-C++ Compiler: 試驗(yàn)項(xiàng)目,windows上,連他的例子我都沒(méi)有編譯成功 :(。
Psyco: 給Python程序加速的東西,看不出對(duì)發(fā)布Python程序的直接好處,并且作者以后將致力于PyPy。
PyPy: 項(xiàng)目目標(biāo)是純Python實(shí)現(xiàn)的Python、速度比CPython快,將來(lái)可以幫助實(shí)現(xiàn)編譯Python。
pyc: Python compiler in Python,一個(gè)用純Python寫(xiě)的Python的bytecode編譯器,可以優(yōu)化輸出的pyc文件。和PyPy一樣,現(xiàn)在還看不出對(duì)發(fā)布Python程序的直接好處。只有py24的bytecode。pyc是pyvm這個(gè)新的python虛擬機(jī)的一部分。
Jungle: 使用GNU工具(as、ld和winres)把Python程序編譯到windows的exe可執(zhí)行文件。該可執(zhí)行文件只使用基于python24的的pythonic.dll。猜測(cè)它支持的模塊僅限于內(nèi)部模塊以及jungle.jgl列出的模塊。只有可執(zhí)行文件下載,而這個(gè)可執(zhí)行文件也是用Jungle自己編譯的。目前版本號(hào)都到1.10了,經(jīng)???.xx的版本號(hào),這個(gè)數(shù)字好大啊,娃哈哈。
另類的方法,對(duì)Python語(yǔ)言特性都還不是100%支持,眾多的CPython模塊也不可以使用,還有,我也沒(méi)有試過(guò):
for .NET的Python編譯器(如Visual Python、IronPython),不過(guò)我可不喜歡為了一個(gè)芝麻大的軟件安裝.NET framework
用jython,然后用jbuilder、jsmooth、NativeJ之類的包裹一下,或者用gcj編譯成本地代碼
在最后,給一個(gè)人學(xué)習(xí)py2exe的文章,幫助學(xué)習(xí):
最近學(xué)了一點(diǎn)PYTHON,想把PYTHON寫(xiě)的程序轉(zhuǎn)換成EXE文件,在網(wǎng)上查到了資料后發(fā)現(xiàn)了這個(gè)東東
寫(xiě)下來(lái)做一下記錄。
英文教程:
http://www.py2exe.org/index.cgi/Tutorial
Python 2.5 + Py2exe
工作目錄:c:\python25
首先隨便寫(xiě)一個(gè)程序
hello.py
print "Hello World!"
測(cè)試一下是否能運(yùn)行
python hello.py
結(jié)果:Hello World
到www.py2exe.org下載 PY2exe ,或者在SF上下載
http://sourceforge.net/project/showfiles.php?group_id=15583
接下來(lái)直接安裝PY2EXE包。。它是一個(gè)安裝文件。。直接裝就行了。
下在編寫(xiě)一個(gè)設(shè)置的PY文件 setup.py
from distutils.core import setup
import py2exe
setup(console=['hello.py'])
運(yùn)行:python setup.py py2exe
出現(xiàn)以下信息后,在DIST目錄里,就會(huì)有一個(gè)hello.exe
即成功。
running py2exe
*** searching for required modules ***
*** parsing results ***
creating python loader for extension 'zlib'
creating python loader for extension 'unicodedata'
creating python loader for extension 'bz2'
*** finding dlls needed ***
*** create binaries ***
*** byte compile python files ***
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\bz2.py to bz2.pyc
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\unicodedata.py to unicodedata.pyc
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\zlib.py to zlib.pyc
skipping byte-compilation of c:\Python24\lib\StringIO.py to StringIO.pyc
[skipping many lines for brevity]
skipping byte-compilation of c:\Python24\lib\warnings.py to warnings.pyc
*** copy extensions ***
*** copy dlls ***
copying c:\Python24\lib\site-packages\py2exe\run.exe -> C:\Tutorial\dist\hello.exe
*** binary dependencies ***
Your executable(s) also depend on these dlls which are not included,
you may or may not need to distribute them.
Make sure you have the license if you distribute any of them, and
make sure you don't distribute files belonging to the operating system.
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
您可能感興趣的文章:
- python中數(shù)字列表轉(zhuǎn)化為數(shù)字字符串的實(shí)例代碼
- python實(shí)現(xiàn)進(jìn)制轉(zhuǎn)化的示例代碼
- Python把圖片轉(zhuǎn)化為pdf代碼實(shí)例
- python 時(shí)間戳與格式化時(shí)間的轉(zhuǎn)化實(shí)現(xiàn)代碼
- python各種語(yǔ)言間時(shí)間的轉(zhuǎn)化實(shí)現(xiàn)代碼
- 手動(dòng)實(shí)現(xiàn)把python項(xiàng)目發(fā)布為exe可執(zhí)行程序過(guò)程分享
- 如何將Python代碼轉(zhuǎn)化為可執(zhí)行的程序
相關(guān)文章
GDAL 矢量屬性數(shù)據(jù)修改方式(python)
這篇文章主要介紹了GDAL 矢量屬性數(shù)據(jù)修改方式(python),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
linux系統(tǒng)使用python監(jiān)控apache服務(wù)器進(jìn)程腳本分享
這篇文章主要介紹了linux系統(tǒng)使用python監(jiān)控apache服務(wù)器進(jìn)程的腳本,大家參考使用吧2014-01-01
Python的pdfplumber庫(kù)將pdf轉(zhuǎn)為圖片的實(shí)現(xiàn)
本文主要介紹了Python的pdfplumber庫(kù)將pdf轉(zhuǎn)為圖片的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
python+mysql實(shí)現(xiàn)個(gè)人論文管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python+mysql實(shí)現(xiàn)個(gè)人論文管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
Python 切片索引越界的問(wèn)題(數(shù)組下標(biāo)越界)
Python語(yǔ)言處理字符串、數(shù)組類的問(wèn)題時(shí)有一定概率需要使用切片方法,本文主要介紹了Python 切片索引越界的問(wèn)題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
python驗(yàn)證碼識(shí)別教程之利用滴水算法分割圖片
這篇文章主要給大家介紹了關(guān)于python驗(yàn)證碼識(shí)別教程之利用滴水算法分割圖片的相關(guān)資料,文章中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06

