2020年10月31日 星期六

【簡單玩python】~~如何將python程式打包成exe執行檔

 介紹了一些python及pygame的學習心得,但有個小問題~那就是:如何將寫好的小程式或遊戲分享給其他未安裝python環境的朋友使用呢?

首先要先認識一下,當你使用python或pygame編寫了一些程式或遊戲時,一般而言你的這些程式只能在具備python的環境下去執行,若是你的程式中使用了一些非標準安裝具備的模組那你還得確認執行的環境中必須具備這些(或是先安裝)模組,才能確保程式能夠順暢正確的執行。在這樣的條件下,你所編寫的程式或遊戲,通常就只能自己玩得開心了,而很難與他人分享成果!

所以囉~~若是想將成果便利的讓其他未安裝python環境的朋友能夠正常的執行、操作,就必須要先克服執行環境這一點,所以如何將程式中所需要的python執行環境及所需模組打包成一支可以獨立執行的執行檔,就成為想將程式或遊戲分享給他人之前必須要學會的一環。

這次就紀錄、分享一下,如何將python寫好的程式或遊戲打包成可以分享、獨立執行(無須安裝python環境)的執行檔(.exe)!

好囉~~廢話說完了,現在就開始談談如何將程式打包成執行檔(for Windows)這件事:

我們這次介紹使用的是:pyinstaller 這支lib

想完整認識pyinstaller這支好用的lib可以到這裡看看

一、首先你必須先安裝pyinstaller:pip install pyinstaller

 若是要升級(原先已安裝舊版):pip install --upgrade pyinstaller


安裝過程會自動檢查相依性,將相關需要的lib自動下載一併安裝,方便!
安裝完成,接著就可以進入「命令提示字元」模式,將目錄切換至python程式所在的目錄

二、開始進行打包程序:pyinstaller -F -w 要打包的程式.py

其中打包的設定參數中:(這是我個人習慣的設定)
-F:表示要將與程式有關的需求整個打包成單一的執行檔
-w:設定程式執行時不要有「命令提示字元」的背景視窗

想多認識一下各種設定參數,可以使用:pyinstaller --help 自行查詢閱讀


三、打包程序跑完,沒看到錯誤訊息,告訴你成功了,就可以到程式所在目錄下查看,應該就會看到執行檔輸出的目錄:「dist」,並在該目錄中看到打包輸出的執行檔。
開心啊~~~!

這時,當你滿懷感恩、感動的心情去執行這支執行檔時,很有可能確會遇到以下這種無法執行的窘境.............殘念!


這是甚麼情況啊????

別急、別慌~~這種情形比較常發生的原因通常是:相關所需的字型或圖檔沒有跟著複製過來

四、所以怎麼解決咧~~就給他複製進去就好囉!例如:範例中主要就是缺乏使用的字型檔,所以直接將該字型目錄複製進dist這個輸出的目錄中就可以解決,讓程式正常執行囉!(若程式中有使用一些圖檔,記得也要一併複製過去即可!)


到這裡,基本上就可以滿足我們這次的需求跟目標了!

你已經可以將「dist」這個資料夾改名、或直接複製給其他人去使用了!拿到你這個檔案的朋友,直接執行裡面的執行檔就可以順利地使用你設計的成果囉!~~~滿意!

若是你跟我一樣,還想滿足一下小小的「虛榮心」,想將輸出的執行檔圖示,更換成你自己想用的圖示(icon),那你可以將要使用的圖示檔案(.ico格式)準備好,接著使用打包參數 -i 進行設定,示範如下:


就可以將執行檔圖示設定成你自行選用的圖示囉~~~!

小小提示與建議:

1.打包時,使用的電腦作業系統版本若為64位元版本,則就只能在相對應的Windows版本中執行,而無法在32位元的作業系統中執行!

2.若遇到pyinstaller版本的問題(應該不常發生,通常與使用到一些比較特殊的lib有關),請自行google一下!(個人之前打包pyQt5時遇到過一次)

3.建議可以試試看不打包成獨立一支執行檔的方式(也就是不加 -F 設定參數),看看結果有何不同。(應該會對打包這件事,有不同的體認)

沒有留言:

張貼留言