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





































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 就可以簡化安裝流程,官網如下




  • https://pip.pypa.io/en/stable/index.html




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


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




  • https://pip.pypa.io/en/stable/installing.html



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




  • http://www.py2exe.org/

  • https://pythonhosted.org/py2app/index.html



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
























































































































































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)

  • 單元 1 - Python 的資源

  • 單元 2 - Python 的開發工具

  • 單元 3 - Python 與數學

  • 單元 4 - Python 與物件導向程式設計

  • 單元 5 - Python 的測試、除錯與模組

  • 單元 6 - Python 中豐富的標準模組庫

  • 單元 7 - Python 有各式各類的開發應用

  • 單元 8 - Pyhton 的模組庫管理及編譯成執行檔








沒有留言:




















window.___gcfg = { 'lang': 'zh-TW' };





Popular posts from this blog

迅雷 Thunder 7.9.43.5054 免安裝版 (9.1.41.914 安裝版) - 支援BT下載的萬用 檔案下載工具

qBittorrent 4.1.1 免安裝中文版 - 取代uTorrent的BT下載器

嘸蝦米輸入法免安裝版 1.0.13.589 - 唯一只用英文字母輸入的中文輸入法