目前 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 |
如果要安裝其他的第三方模組庫,就把以上 py2exe 或 py2app 改成對應的模組庫名稱即可,詳細請參考該模組庫的安裝指南。
安裝好之後,下面繼續示範在 Mac 使用 py2app 打包程式,基本上這兩種的做法類似,簡單講都是要先替 Python 程式建立 setup.py ,再由 setup.py 打包成執行檔。
我們打算打包以下 Python 2 的 Tk 程式,檔名儲存為 demo2.py
001 | from Tkinter import * |
002 | |
003 | class 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 | |
032 | if __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)
沒有留言:
張貼留言