pyinstaller簡潔教程

PyInstaller可以用來打包python應用程序,打包完的程序就可以在?有安裝Python解釋器的機器上運行了。PyInstaller支持Python 2.7和Python 3.3+。可以在Windows、Mac OS X和Linux上使用,但是并不是跨平臺的,而是說你要是希望打包成.exe文件,需要在Windows系統(tǒng)上運行PyInstaller進行打包工作;打包成mac app,需要在Mac OS上使用。

創(chuàng)新互聯(lián)建站專注于七星關(guān)區(qū)網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供七星關(guān)區(qū)營銷型網(wǎng)站建設,七星關(guān)區(qū)網(wǎng)站制作、七星關(guān)區(qū)網(wǎng)頁設計、七星關(guān)區(qū)網(wǎng)站官網(wǎng)定制、微信小程序服務,打造七星關(guān)區(qū)網(wǎng)絡公司原創(chuàng)品牌,更為您提供七星關(guān)區(qū)網(wǎng)站排名全網(wǎng)營銷落地服務。

安裝

linux or mac

你可以從PyPi上下載安裝,當然也可以使用pip或者easy_install來安裝。

1 2 3 
pip install pyinstaller or easy_install pyinstaller 

版本更新

1 2 3 
pip install --upgrade pyinstaller or easy_install --upgrade pyinstaller 

windows

Windows上運行PyInstaller還需要PyWin32或者pypiwin32,其中pypiwin32在你安裝PyInstaller的時候會自動安裝。

使用PyInstaller

PyInstaller分析你的python程序,找到所有的依賴項。然后將依賴文件和python解釋器放到一個文件夾下或者一個可執(zhí)行文件中。

打包成一個文件夾

當使用PyInstaller打包的時候,默認生成一個文件夾,文件夾中包含所有依賴項,以及可執(zhí)行文件。打包成文件夾的好處就是debug的時候可以清楚的看到依賴項有沒有包含。另一個好處是更新的時候,只需要更新可執(zhí)行文件就可以了。當然缺點也很明顯,不方便,不易管理。

1 
pyinstaller script.py 

那么它是如何工作的呢?PyInstaller的引導程序是一個二進制可執(zhí)行程序。當用戶啟動你的程序的時候,PyInstaller的引導程序開始運行,首先創(chuàng)建一個臨時的Python環(huán)境,然后通過Python解釋器導入程序的依賴,當然他們都在同一個文件夾下。

打包成一個文件

我們可以用onefile參數(shù)將所有文件打包到一個可執(zhí)行文件中。

1 
pyinstaller --onefile script.py 

打包成一個文件相對于文件夾更容易管理。壞處運行相對比較慢。這個文件中包含了壓縮的依賴文件拷貝(.so文件)。

當程序運行時,PyInstaller的引導程序會新建一個臨時文件夾。然后解壓程序的第三方依賴文件到臨時文件夾中。這也是為什么一個可執(zhí)行文件比文件夾中執(zhí)行的時間要長的原因。剩下的就和上面的一樣了。

spec 文件

當你執(zhí)行下面命令

1 
pyinstaller options..script.py 

PyInstaller首先建一個sepc(specification)文件:script.spec。這個文件的存放地址可以使用參數(shù)–specpath= 來定義,默認放在當前文件夾下。

spec文件的作用是什么呢?它會告訴PyInstaller如何處理你的py文件,它會將你的py文件名字和輸入的大部分參數(shù)進行編碼。PyInstaller通過執(zhí)行spec文件中的內(nèi)容來生成app,有點像makefile。正常使用中我們是不需要管spec文件的,但是下面幾種情況需要修改spec文件:

  • 需要打包資源文件

  • 需要include一些PyInstaller不知道的run-time庫

  • 為可執(zhí)行文件添加run-time 選項

  • 多程序打包

可以通過下面命令生成spec文件

1 
pyi-makespec options script.py [other scripts ...] 

修改完spec文件,就可以通過下面命令來生成app文件了

1 
pyinstaller options script.spec 

當通過spec文件來生成app文件的時候只有下面幾個參數(shù)是有用的:

  • –upx-dir=

  • –distpath=

  • –noconfirm=

  • –ascii

spec 文件解析

下面是一個spec文件的例子。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 
block_cipher = None a = Analysis(['minimal.py'], pathex=['/Developer/PItests/minimal'], binaries=None, datas=None, hiddenimports=[], hookspath=None, runtime_hooks=None, excludes=None, ciper=block_cipher) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, ...) coll = COLLECT(...) 

spec文件中主要包含4個class: Analysis, PYZ, EXE和COLLECT.

  • Analysis以py文件為輸入,它會分析py文件的依賴模塊,并生成相應的信息

  • PYZ是一個.pyz的壓縮包,包含程序運行需要的所有依賴

  • EXE根據(jù)上面兩項生成

  • COLLECT生成其他部分的輸出文件夾,COLLECT也可以沒有

修改spec文件

我們上面說過有時候PyInstaller自動生成的spec文件并不能滿足我們的需求,最常見的情況就是我們的程序依賴我們本地的一些數(shù)據(jù)文件,這個時候就需要我們自己去編輯spec文件來添加數(shù)據(jù)文件了。
上面的spec文件解析中Analysis中的datas就是要添加到項目中的數(shù)據(jù)文件,我們可以編輯datas.

1 2 3 4 5 6 
a = Analysis( ... datas = [('you/source/file/path','file_name_in_project'), ('source/file2', 'file_name2')] ... ) 

可以認為datas是一個List,每個元素是一個二元組。元組的第一個元素是你本地文件索引,第二個元素是拷貝到項目中之后的文件名字。除了上面那種寫法,也可以將其提出來。

1 2 3 4 5 6 7 
added_files = [...] a = Analysis( ... datas = added_files, ... ) 

其他的二進制文件添加方法類似。

總結(jié)

最后簡單來說,我們要通過PyInstaller生成可執(zhí)行的文件主要下面兩步。

1 
pyinstaller [option] mypython.py 

option為空生成文件夾,選擇onefile,生成一個文件。
如果項目有一些依賴的數(shù)據(jù)文件,上面生成的二進制文件是無法運行的,這個時候可以通過修改spec文件,讓后再用pyinstaller運行spec文件。

1 
pyinstaller [option] mypython.spec 

當然也按上文那樣先生成spec文件。


當前標題:pyinstaller簡潔教程
本文來源:http://bm7419.com/article26/jg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供Google、企業(yè)建站微信小程序、網(wǎng)站策劃、建站公司云服務器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管