王瑞文+王圣輝+邊潤(rùn)根+鄧明月
摘 要:Python是一種很流行的開源編程語(yǔ)言,可以在各種領(lǐng)域中用來編寫?yīng)毩⒌某绦蚝湍_本。Python免費(fèi)、可移植、功能強(qiáng)大,而且使用起來相當(dāng)容易。來自軟件產(chǎn)業(yè)各個(gè)角落的程序員都已經(jīng)發(fā)現(xiàn),Python對(duì)于開發(fā)者效率和軟件質(zhì)量都十分關(guān)注,這無(wú)論在大項(xiàng)目還是小項(xiàng)目中都是一個(gè)戰(zhàn)略性的優(yōu)點(diǎn)。但是Python也有一點(diǎn)點(diǎn)小缺陷,那就是Python程序的執(zhí)行必須要有解釋器的參與。Python的程序如何在沒有解釋器的平臺(tái)上使用,很簡(jiǎn)單,將Python程序打包成exe可執(zhí)行文件即可。文章對(duì)Python程序打包成exe可執(zhí)行文件的方法進(jìn)行探究,以期為Python程序的深入應(yīng)用提供一定支持。
關(guān)鍵詞:Python程序;exe可執(zhí)行文件;解釋器
Python最大的優(yōu)點(diǎn)是簡(jiǎn)單易學(xué),其語(yǔ)法不像其他編程語(yǔ)言那樣復(fù)雜。閱讀一個(gè)良好的Python程序就感覺像是在讀英語(yǔ)一樣,它使你能夠?qū)W⒂诮鉀Q問題而不是去搞明白語(yǔ)言本身。
Python也被稱為是一門清晰的語(yǔ)言。因?yàn)樗淖髡咴谠O(shè)計(jì)它的時(shí)候,總的指導(dǎo)思想是:對(duì)于一個(gè)特定的問題,只要有一種最好的方法來解決就好了。Python具有腳本語(yǔ)言中最豐富和強(qiáng)大的類庫(kù),足以支持絕大多數(shù)日常應(yīng)用。在實(shí)際開發(fā)中,Python常被昵稱為膠水語(yǔ)言,這不是說它會(huì)把你的手指粘住,而是說它能夠很輕松地把用其他語(yǔ)言制作的各種模塊聯(lián)結(jié)在一起。Python的優(yōu)點(diǎn)還包括可擴(kuò)充性免費(fèi)、開源、高級(jí)語(yǔ)言、可移植性、解釋性、可擴(kuò)展性、可嵌入性等。
1 利用Windows平臺(tái)工具打包
1.1 Py2exe打包
Py2exe是把Python腳本轉(zhuǎn)換為Windows平臺(tái)上面可以運(yùn)行的可執(zhí)行程序的工具。Py2exe的使用方法十分簡(jiǎn)單,需要進(jìn)行3個(gè)步驟:(1)根據(jù)你本地安裝的Python的版本來選擇要安裝的Py2exe版本;(2)為py文件編寫setup文件。(3)執(zhí)行setup文件進(jìn)行編譯。
舉個(gè)簡(jiǎn)單的例子:如果你有一個(gè)名字為Py2exe.py的腳本程序需要打包,使它能夠運(yùn)行在Windows平臺(tái)上,那么首先你需要寫一個(gè)設(shè)置腳本如setup.py。setup.py示例如下:
#setup.py
from distutils.core import setup
import py2.exe
setup(console=[“py2exe.py”])
然后在cmd中按下面的方法運(yùn)行mysetup.py:
python mysetup.py py2exe
上面的命令執(zhí)行后將產(chǎn)生一個(gè)名為dist的子目錄,其中包含了py2exe.exe,library.zip這些文件,dist子目錄中的文件包含了程序所必需的東西。
可能出現(xiàn)的問題:(1)error MSVCP90.dll:No such file or directory,解決方法:將該dll寫入dll_excludes中;(2)error.bundle-files 1 not yet supported on win64,對(duì)于64位的Py2exe而言,bundle_files選項(xiàng)目前仍不可用,無(wú)法生成單文件。
1.2 cx_freeze打包
與Py2exe相同,cx_freeze打包也需要下載并安裝與Python版本相同的程序。生成可執(zhí)行程序有兩種方式:(1)通過cxfreeze-quickstart生成setup.py文件,定制setup.py文件;(2)執(zhí)行cxfreeze main.py默認(rèn)生成dist目錄??梢蕴砑舆x項(xiàng),可以通過cxfreeze-h查看幫助文檔。
一般情況下,這兩種都可以正確生成可執(zhí)行程序。特殊情況下,第一種可能會(huì)出現(xiàn)錯(cuò)誤,第二種不會(huì)出現(xiàn)錯(cuò)誤。第一種需要自己定制setup.py文件,需要手動(dòng)添加第三方模塊,如果不添加,會(huì)出現(xiàn)錯(cuò)誤。
cx_freeze可以生成exe文件加運(yùn)行時(shí)所依賴的其他多個(gè)文件和單獨(dú)的msi安裝文件包。和Pyinstaller相比,缺點(diǎn)有:需要手動(dòng)自己輸入所依賴的庫(kù)的名字,無(wú)法自動(dòng)識(shí)別;還需要添加對(duì)應(yīng)的path,供其搜索依賴的庫(kù)。
2 第三方庫(kù)Pyinstaller打包
2.1 第三方庫(kù)的安裝
Pyinstaller需要在命令行(控制臺(tái))下用工具安裝,如圖1所示。
pip install pyinstaller
如果沒有設(shè)置環(huán)境變量,可以在Python的安裝目錄下的scripts文件夾下找到pip.exe,在命令行下運(yùn)行它就可以了。
2.2 打包Python程序的命令
Pyinstaller庫(kù)會(huì)自動(dòng)將Pyinstaller命令安裝到Python解釋器目錄中,與pip或pip3命令相同,因此可以直接使用。使用Pyinstaller庫(kù)十分簡(jiǎn)單,請(qǐng)注意,Pyinstaller不支持源文件名中有英文句號(hào)存在。打包命令如下:
Pyinstaller –F e:\pythonexe\GUI.py –noconsole
參數(shù)說明:-F 表示生成單個(gè)可執(zhí)行文件;
-w表示去掉控制臺(tái)窗口,這在GUI界面時(shí)非常有用;
-p表示你自己自定義需要加載的類路徑,一般情況下用不到;
-i表示可執(zhí)行文件的圖標(biāo);
-noconsole表示去掉控制臺(tái)窗口,如果還想添加自定義的依賴庫(kù),就要加上-p參數(shù)。
2.3 獲得打包后的exe程序
執(zhí)行完畢后,源文件所在目錄將生成dist和build兩個(gè)文件夾。其中build是Pyinstaller存儲(chǔ)臨時(shí)文件的目錄,可以安全刪除。最終的打包程序在dist文件夾中,目錄中其他文件是可執(zhí)行文件的動(dòng)態(tài)鏈接庫(kù)。
3 結(jié)語(yǔ)
本文列出了3種較為快捷的Python打包方法,使得每次運(yùn)行腳本不再需要打開IDE。其中使用第三方庫(kù)Pyinstaller打包方法較為簡(jiǎn)單方便,且不易出現(xiàn)問題。Py2exe打包的程序只能在相同的系統(tǒng)下運(yùn)行,在XP系統(tǒng)用Py2exe打包的exe只能在XP上運(yùn)行,在Win 7上肯定會(huì)出問題,而Pyinstaller打包則不會(huì)出現(xiàn)這種問題。
作者簡(jiǎn)介:王瑞文(1997— ),男,江西吉安,本科;研究方向:航空宇航制造。
[參考文獻(xiàn)]
[1]赫特蘭.Python基礎(chǔ)教程[M].凌杰,陸禹淳,顧俊,譯.北京:人民郵電出版社,2010.
[2]陳仲才.Python核心編程[M].楊濤,譯.北京:機(jī)械工業(yè)出版社,2001.
[3]魯特茲.Python學(xué)習(xí)手冊(cè)[M].侯靖,譯.3版.北京:機(jī)械工業(yè)出版社,2009.
Abstract: Python is a popular open source programming language that can be used in a variety of fields to write separate programs and scripts. Python is free, portable, powerful and easy to use. Programmers from every corner of the software industry have found that Python is very concerned about developers efficiency and software quality, which is a strategic advantage both in large and small projects. However, Python also has a small flaw, that is, Python program execution must have the participation of the interpreter. How does a Python program work on an interpreter free platform? Its easy to package Python programs into exe executable files. This paper explores the methods that Python programs package into exe executable to provide some support for the indepth application of Python programs.
Key words: Python programs; exe executable files; interpreter