Pygame使用pyinstaller打包exe以及停止工作問題
前幾天在某老師傅的引導下做了2048小遊戲,想發給室友玩,但她們沒安裝python環境,谷歌了下,python指令碼可以打包成exe,實際步驟很簡單,但過程中的問題千奇百怪。。。花了一天,終於可以在室友電腦上運行了。
首先說一下打包過程:
1.下載pyinstaller(一個用來打包程式的模組),(可以在官網下載,然後安裝,)我就直接在anaconda,執行cmd,輸入pip pyinstaller,安裝了。(可以 pip list檢視是否安裝成功)
2.將py檔案放進一個資料夾,cmd進入這個資料夾,pyinstaller -w dd.py(dd.py是我的指令碼檔案)
。。。
3.看到successfully是不是很興奮,如果正常的話,接下來,開啟前面那個專案資料夾,生成有一個dist資料夾,進去找到.exe執行檔案雙擊即可。
當然了,一般不會這麼順利。。。。接下來說說我遇到的也算是解決了的問題。
1.我的環境是pycharm+anaconda3,因為寫2048需要的numpy庫anaconda3(集合了很多庫,很方便)自帶了,pygame庫是後面pip裝在anaconda3裡的,pycharm用的就是anaconda3的python.exe,同樣我打包2048這個遊戲也應該是和anaconda有關。
但我原來還有個Python3.5的IDLE,所以在打包過程中,預設就用原來的這個了,搜了下,發現這個
以為加個路徑就可以了吧,結果還是不行,各種報錯,說路徑找不到檔案什麼的,然後路徑加了引號,還是報錯,import error,仔細看了打包過程,說anaconda3的numpy的multiarray不能引入。。。(可是這是anaconda自帶的啊。。難道是我安裝有問題?)
所以為了最簡單解決以上問題,我乾脆把原來的IDLE刪了,anaconda3也重新安裝,pycharm重新匯入anaconda的exe。
2.接下來的問題是可以生成exe但是停止工作。谷歌了很多,快要放棄的時候看到了這個小姐姐寫的
,抱著最後試一次的沉重心情,把檔案的字型從None改成了’arial’,又打包了一次,結果成功了,很激動,感謝這位小姐姐~~~
原因就是打包後的exe找不到字型資源,所以就出錯了。
3.pyinstaller dd.py,不加引數時,執行後先生成一個黑框框,然後才是遊戲介面,這個只用加個-w,就可以。
4.我只發exe檔案給室友玩還打不開,如果3.中沒有-w,保留了黑框框,即命令列視窗,就會一閃而過,加了-w,發給室友還是會報錯,如下:
印象中python36.dll在cmd打包過程中看到過,我發現它和exe檔案放在一個資料夾裡,就是dist裡,就把整個檔案發給室友了,再開啟裡面的exe,就ok,不過有大小有100M。。。
收工~