Python 新手之旅 V1.10 - 單元 8 - Pyhton 的模組庫管理及編譯成執行檔



目前 Python 有 2 跟 3 兩個版本,依據 Python 2.7 的發佈計畫 PEP 0373 ,並不會有 Python 2.8 ,而 Python 2.7 也只會維護、支援到西元 2020 年。


既然 Python 3 都已經問世這麼久了,為什麼 Python 2 還要持續支援呢?原因不外是仍有廣大的第三方模組庫 (third-party library) 在持續發展中,為了要讓這些模組庫 (library) 能夠順利的銜接到 Python 3 , Python 官方一直在做這些努力,倒是也差不多都要轉移到 Python 3 了,因此 Python 2 的支援也由官方宣告了終點。


無論如何,初學就直接學 Python 3 比較理想囉!


至於第三方模組庫就需要自己安裝了,很多第三方模組庫都有提供各種作業系統的安裝檔,如 Kivy 直接下載安裝即可,可是也有很多第三方模組庫只提供原始檔,想要手動自己安裝或使用,就得懂很多命令列處理的細節,說來有點麻煩就是了。


因此有人開發出便捷的套件管理系統 (package management system) pip ,利用 pip 就可以簡化安裝流程,官網如下



pip 在 Python 2.7.9 及 3.4 之後納入標準模組庫,因此安裝 2.7.9 或 3.4 之後的 Python 版本都已預設安裝。

如果還沒安裝 pip ,就照官網安裝頁下載 get-pip.py ,然後執行這個程式即可



安裝好之後,下面我們示範安裝打包 Python 程式為執行檔的第三方模組庫, MS-Windows 有 py2exe ,對應到 Mac 系統則有 py2app



MS-Windows 系統安裝 py2exe 請打指令如下


pip install py2exe

Mac 系統安裝 py2app 則輸入如下的指令


pip install -U py2app

如果要安裝其他的第三方模組庫,就把以上 py2exepy2app 改成對應的模組庫名稱即可,詳細請參考該模組庫的安裝指南。

安裝好之後,下面繼續示範在 Mac 使用 py2app 打包程式,基本上這兩種的做法類似,簡單講都是要先替 Python 程式建立 setup.py ,再由 setup.py 打包成執行檔。


我們打算打包以下 Python 2 的 Tk 程式,檔名儲存為 demo2.py


001from Tkinter import *
002
003class HelloApp(Frame):
004    def __init__(self, master=None):
005        Frame.__init__(self, master)
006        self.grid()
007        self.createWidgets()
008        self.count=0
009
010    def createWidgets(self):
011        self.QUIT = Button(self)
012        self.QUIT["text"] = "QUIT"
013        self.QUIT["command"] = self.quit
014        self.QUIT.grid(row=0, column=0)
014
015        self.hi = Button(self)
016        self.hi["text"] = "Hi"
017        self.hi["command"] = self.say_hi
018        self.hi.grid(row=0, column=1)
019
020        self.text = Label(self)
021        self.text["text"] = "something happened"
022        self.text.grid(row=1, column=0,
023                       columnspan=2)
024
025    def say_hi(self):
026        self.count+=1
027        if self.count % 2 == 0:
028            self.text["text"] = "Hi everyone!"
029        else:
030            self.text["text"] = "Try again!"
031
032if __name__ == '__main__':
033    root = Tk()
034    root.wm_title("HelloApp")
035    app = HelloApp(master=root)
036    app.mainloop()

由於 py2app 對 Python 3 的支援尚不完整,所以此例是用 Python 2 的例子。

py2app 可以直接用 py2applet 指令建立 setup.py 或執行檔,只需要簡單打如下指令


py2applet demo2.py

就會在相同目錄下產生執行檔



這個執行檔採 Mac 的預設圖示,如果要自訂圖示就要自行編輯 setup.py ,再由 setup.py 建立執行檔。

開啟 demo2 如下圖



py2exe 的部分,請參考官網的 Tutorial

至於 Kivy 應用程式, Kivy 官方建議用 PyInstaller 或其他的工具來打包 ,細節請參考官方提供的打包指南 Programming Guide » Packaging your application

打包成執行檔的目的不外就是給沒有 Python 或不知道怎麼用 Python 的人方便使用,另外也可藉此銷售自己開發的程式。如此軟體專案無論免費供人使用或是販售,使用者的回饋對開發者是很重要的,若要持續開發,累積好評及負評便可作為後續版本的參考。


the end


Python 新手之旅 V1.10 (Google Play)

沒有留言: