关于Python的应用发布技术
收集如何 將Py應用打包發布的各種技巧: ??
1.1. 工具
{{{k <yanbo.yuan@gmail.com> ?reply-to python-cn@googlegroups.com, ?to python-cn@googlegroups.com, ?date Tue, Apr 1, 2008 at 2:58 PM ?subject [CPyUG:45605]}}}[http://groups.google.com/group/python-cn/t/24fbb899f27df30e 將Python程序轉化為可執行程序~整理] ???
工欲善其事,必先利其器.python是解釋型的語言,但是在windows下如果要執行程序的話還得加個python shell的話,未免也太麻煩了.而這里所說的東西就是將python程序轉換為exe文件.下面是一些常用的工具,不過似乎py2exe應用的更加廣泛一些. ??
1.1.1. py2exe
-
http://py2exe.sf.net???
只支持windows平臺,應該是大家聽到最多的一個名字了,用戶不少,所以有問題的話在它的mail list里面很容易找到答案。文檔中提到了"無法找到某某code"、使用opengl等模塊的問題 ??
1.1.2. PyPackage
-
http://codereactor.net/projects/pypack/index.html
我覺得py2exe等等工具還是羅嗦得像唐僧,需要在配置文件中寫上需要的數據文件。作者完全無視這樣一個事實:我需要發布可執行文件的時候,程序已經完工了,所有的數據文件就在主程序所在目錄下,所以多數情況下,根本不用到別的地方搜索。現在終于有人站了出來,PyPackage實際上并不是一個程序打包的工具,而只是簡化py2exe的操作,甚至可以自動調用InnoSetup 5制作安裝文件
不過這個軟件并不智能,會打包很多不需要的文件
1.1.3. Installer
-
http://www.mcmillan-inc.com/installer_dnld.html
可以產生windows、linux平臺的可執行文件,現在作者主頁連不上去了,但是搜索一下可以在其它地方下載 自帶一個小程序寫配置文件,如果程序較復雜,還是需要手工修改這個配置文件。支持從py15以來的所有Python版本
-
2005 年9月,冰凍牡蠣更新:Giovanni Bajo獲得Gordon McMillan's Installer的授權、版權改變為GPL,
-
并在 http://pyinstaller.hpcf.upr.edu/ 繼續開發PYinstaller。
?
-
-
2006年9月更新:這里可以看到 Gordon McMillan's的原始網站的鏡像
?
1.1.4. Python自帶的freeze.py
(不過windows版本不帶這個,你可以自己下載Python的源程序再找)。 這個是我最不推薦的一種方法(為什么?自己看),不過如果你的Python程序要發布到其它工具不支持的平臺上,可以考慮這個方法
1.1.5. Pyco
新出來的 http://www.pythonapocrypha.com/projects/pyco/??還沒用過
1.1.6. Squeeze
-
http://starship.python.net/crew/fredrik/ipa/squeeze.htm?還沒用過,只支持Python 1.4
1.1.7. cx_Freeze
-
http://starship.python.net/crew/atuining/cx_Freeze/?winodws、linux平臺。簡單的程序甚至都不需要寫配置文件
1.1.8. Stand alone Python for Windows
-
http://arctrix.com/nas/python/standalone.html
?如果你不介意源程序太過"暴露"的話,用這個吧 ,會不會覺得Updated: Sun, 09 Apr 2000 18:39:54 -0600 扎眼?
- 如果你看一看它的VC源代碼,就不會這么想了
其實這是普遍適用于win系統的方法,無論是98、2000或者xp。也許也可以用到linux上
我不懂linux,如果真的可以這么做,還請告訴我。
1.1.9. py2app
-
http://undefined.org/python/
?支持linux平臺的工具可能也支持mac os,或者直接使用這個py2app。具體就不知道了,只吃過蘋果,還沒玩過蘋果呢
1.1.10. Movable Python
-
http://www.voidspace.org.uk/python/movpy/
?這個其實是使用py2exe制作的、可以放在U盤上的綠色Python。有使用py2app制作蘋果版movpy和用cx_Freeze制作Linux版movpy的計劃。懶到都不愿意學習py2exe、py2app或者cx_Freeze的人可以看看。
1.1.11. Shed Skin
- A Python-to-C++ Compiler:
- 試驗項目,windows上,連他的例子我都沒有編譯成功 :(。
1.1.12. Jungle
: 使用GNU工具(as、ld和winres)把Python程序編譯到windows的exe可執行文件。
- 該可執行文件只使用基于python24的的pythonic.dll。
- 猜測它支持的模塊僅限于內部模塊以及jungle.jgl列出的模塊。
- 只有可執行文件下載,而這個可執行文件也是用Jungle自己編譯的。
- 目前版本號都到1.10了,經常看0.xx的版本號,這個數字好大啊,娃哈哈。
1.1.13. 另類的方法
,對Python語言特性都還不是100%支持,眾多的CPython模塊也不可以使用,還有,我也沒有試過:
for .NET的Python編譯器-
(如Visual Python、IronPython),不過我可不喜歡為了一個芝麻大的軟件安裝.NET framework
?
- 用jython,然后用jbuilder、jsmooth、NativeJ之類的包裹一下,或者用gcj編譯成本地代碼
1.1.13.1. Psyco
: 給Python程序加速的東西,看不出對發布Python程序的直接好處,并且作者以后將致力于PyPy。
1.1.13.2. PyPy
: 項目目標是純Python實現的Python、速度比CPython快,將來可以幫助實現編譯Python。
1.1.13.3. pyc
: Python compiler in Python,一個用純Python寫的Python的bytecode編譯器,可以優化輸出的pyc文件。
-
和PyPy一樣,現在還看不出對發布Python程序的直接好處。只有py24的bytecode。
?
- pyc是pyvm這個新的python虛擬機的一部分。
1.1.13.4. Pyrex
使用Pyrex
- 直接將Python 應用編譯成 C 代碼,然后,自然就生成.exe 了
1.2. 體驗
-
手動制作python的exe可執行程序 ~ by LeoJay
?
1.2.1. PyInstaller
{{{nEO (a.k.a. gentoo.cn) <gentoo.cn@gmail.com> reply-to python-cn@googlegroups.com, to python-cn@googlegroups.com, date Wed,
Apr 2, 2008 at 12:34 AM }}} http://pyinstaller.python-hosting.com/
吸取了py2exe的優點, 支持打包成一個可執行文件, 支持upx殼, 支持多平臺 體積比py2exe生成的小 我現在用這個替代py2exe了
1.2.2. NSIS
{{{Gerald Lee <leejd80@gmail.com> reply-to python-cn@googlegroups.com, to python-cn@googlegroups.com, date Tue, Apr 1,
2008 at 8:19 PM subject [CPyUG:45664] Re: 將Python程序轉化為可執行程序[整理] }}}
- 這兩天一直在寫NSIS腳本做安裝程序,因為是N個模塊定制安裝的,所以我用python寫,然后輸出NSI腳本文件,再逐個編譯,以產生需要的安裝文件。
- 寫腳本的過程突然發現一個問題,是不是可以使用nsis腳本來引導python程序呢?以前一直是用bat文件引導的。順手寫了一個,測試感覺可行,生成的一個exe文件33K,NSIS代碼如下:
Name "Python Launcher"Icon "images\shipping.ico"OutFile "GridOK.exe"SilentInstall silentAutoCloseWindow trueShowInstDetails nevershowSection "" Exec "pythonw GridOK.py";這里可能需要變動一下SectionEnd
參考資料:
-
http://www.blogjava.net/xilaile/archive/2007/05/13/117039.html
?
1.2.3. 實例 Py2exe
在最后,給一個人學習py2exe的文章,幫助學習: 最近學了一點PYTHON,想把PYTHON寫的程序轉換成EXE文件,在網上查到了資料后發現了這個東東 寫下來做一下記錄。 英文教程:
-
http://www.py2exe.org/index.cgi/Tutorial
?
Python?2.5?+?Py2exe 工作目錄:c:\python25
首先隨便寫一個程序- hello.pyprint "Hello World!"
- python hello.py結果:Hello World
到www.py2exe.org下載 PY2exe ,或者在SF上下載
?
- 。。它是一個安裝文件。。直接裝就行了。
-
下在編寫一個設置的PY文件 setup.py
from distutils.core import setupimport py2exesetup(console=['hello.py'])
運行:python?setup.py?py2exe 出現以下信息后,在DIST目錄里,就會有一個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, andmake 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轉載于:https://www.cnblogs.com/DxSoft/archive/2010/05/14/1735196.html
總結
以上是生活随笔為你收集整理的关于Python的应用发布技术的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设备通过海康EHOME协议接入EasyC
- 下一篇: Python 最好用的8个VS Code