問題:即使是在30年之后,Python仍然沒能拿到理想的方法,用以將程序或腳本轉換為自打包可執(zhí)行文件,并輕松部署在多種平臺之上。
雖然這一目標已經(jīng)有辦法實現(xiàn),但依靠的主要是第三方工具,而非Python的原生功能——此外,其使用難度也不太友好。
最具知名且最受支持的當數(shù)PyInstaller,它能夠打包多種廣受喜愛的高人氣第三方擴展,例如NumPy。不過PyInstaller必須與這些第三方擴展手動保持同步,而這在Python的龐大生態(tài)系統(tǒng)中無疑是一項艱巨的任務。此外,PyInstaller會生成超大的應用程序包,因為其中捆綁有程序import語句中所要求的全部內容,而且并不確定在運行時究竟會用到哪些組件。此外,PyInstaller也無法實現(xiàn)跨平臺應用程序打包;我們必須在目標部署平臺上進行包創(chuàng)建。
解決方案:我對PyInstaller抱有充分的尊重,但我們可能還需要一套Python原生解決方案——無論是內置形式,還是通過標準庫提供。它應當允許開發(fā)人員以獨立二進制文件的形式將Python應用程序打包并交付至各類常見的平臺。理想情況下,這款內置的打包器應該利用運行時代碼覆蓋率信息確保僅打包所需的庫(而非所有內容),并能夠自動與其余Python庫保持同步。
目前還沒有這樣的解決方案存在,但關于如何構建此類工具的提示倒是所在多有。PyOxidizer項目使用Rust語言生成能夠嵌入Python的二進制文件,并將此作為創(chuàng)建獨立Python應用程序的一種方法。雖然該項目尚處于起步階段,距離成為完整的應用程序交付方案還有很長的路要走,但這足以證明Python生態(tài)系統(tǒng)之外的成果也許會成為解決挑戰(zhàn)的關鍵。
以上內容為大家介紹了Python打包與獨立可執(zhí)行文件,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://m.2667701.com/