使用PyInstaller將Pygame庫編寫的小游戲程序打包為exe文件及出現(xiàn)問題解決方法
下面看下通過Pyinstaller打包Pygame庫寫的小游戲程序出現(xiàn)的問題解決方法
# -基于Python的Pygame庫的GUI游戲
游戲內(nèi)容是通過飛船發(fā)射子彈來射擊外星人
空格鍵為開火,左右方向鍵移動(dòng),并設(shè)立了
不同關(guān)卡。
使用說明:
開發(fā)環(huán)境,游戲直接運(yùn)行alien_invasion.exe即可,也可在具有Python3環(huán)境下運(yùn)行alien_invasion.py
練習(xí)環(huán)境:
Python:3.5.4 64位
pyinstall:3.3.1
pyinstall使用:
pyinstaller -F demo.py
參數(shù) 含義
-F 指定打包后只生成一個(gè)exe格式的文件
-D –onedir 創(chuàng)建一個(gè)目錄,包含exe文件,但會(huì)依賴很多文件(默認(rèn)選項(xiàng))
-c –console, –nowindowed 使用控制臺,無界面(默認(rèn)選項(xiàng))
-w –windowed, –noconsole 使用窗口,無控制臺
-p 添加搜索路徑,讓其找到對應(yīng)的庫。
-i 改變生成程序的icon圖標(biāo)
打包注意事項(xiàng):
1.打包有2種方式:
- 第一種是使用'-F'打包成單一的可執(zhí)行文件,如alien_invasion.exe,此項(xiàng)目需要將
- images文件夾放置在與其同一目錄下;
- 第二種是默認(rèn)使用'-D'方式,(但是我打包完成后無法運(yùn)行,打包時(shí)經(jīng)常出現(xiàn)“hidden import “pygame._view”not found”)
2.打包的文件與《Python編程:從入門到實(shí)踐》練習(xí)的項(xiàng)目文件有所差異,具體為
button.py與scoreboard.py中的字體做了改動(dòng),由
'pygame.font.SysFont(None, 48)'=>'pygame.font.SysFont('arial', 36)'
3.使用pyinstaller打包時(shí),不會(huì)自動(dòng)包含圖片文件,所以最簡單的方式是打包后將圖片放在運(yùn)行程序的
相應(yīng)路徑下。
?。?!打包完畢后一定要講你的素材images放在exe目錄里面,以便exe文件能夠鏈接到你的素材。
PS:指定dist生成目錄路徑(而不是命令行當(dāng)前目錄)
pyinstaller -F E:/*/*/*.py --distpath=E:*/*/*/dist
接著介紹下使用PyInstaller將Pygame庫編寫的小游戲程序打包為exe文件的方法。
一、安裝Pyinstaller
環(huán)境:python3.6、window10
注意事項(xiàng):
- python64位版本打包的exe,只能在64位操作系統(tǒng)使用
- 打包文件夾和文件的名稱不能用中文
- pygame打包是里面的字體要改成"arial"格式。 pygame.font.SysFont("宋體", 32) 32) 換成 pygame.font.SysFont('arial',32)
1、直接安裝
pip命令安裝:pip install Pyinstaller
安裝成功后會(huì)提示如下圖所示
2、Anaconda環(huán)境下安裝
如果是在Anaconda環(huán)境下直接打包,可能會(huì)將其中大部分?jǐn)U展都打包進(jìn)去了,造成打包后的exe文件過大,為此有以下解決方案(如果未出現(xiàn)此問題的同學(xué)請?zhí)^)。
- 建立虛擬環(huán)境 :pipenv install
- 進(jìn)入虛擬環(huán)境:pipenv shell
- 安裝所需模塊 pip install pygame
- 打包的模塊也要安裝 pip install pyinstaller
本人在C:/Users/EDZ/目錄中新建Pyinstaller文件,首先進(jìn)入目錄,建立虛擬環(huán)境,進(jìn)入虛擬環(huán)境,最后安裝程序所需的安裝模塊以及pyinstaller。具體過程如圖所示:
二、使用Pyinstaller打包生成exe文件
將要打包的py文件放入所創(chuàng)建的C:\Users\EDZ\Pyinstaller目錄中,將自定義程序圖標(biāo)ico文件,也一同放進(jìn)程序所在目錄程序。
介紹一下 Pyinstaller 常用的參數(shù)用法:
- -F: 表示生成單個(gè)可執(zhí)行文件
- -D:表示打包多個(gè)文件,在dist中生成很多依賴文件,
- -w:指定生成 GUI 軟件,表示去掉控制臺窗口
- -i <Icon File>: 指定打包后可執(zhí)行文件的圖標(biāo)
命令:pyinstaller -F -w -i snaker.ico retro_snaker.py
稍微等待后,如果成功則會(huì)提示successfully,如圖所示:
三、運(yùn)行生成的exe文件
打包完成后,exe程序?qū)?huì)產(chǎn)生在打包目錄的dist文件中。
如圖所示:
那么我們就可以打開并運(yùn)行你所打包的exe文件了
四、exe文件運(yùn)行中的問題
缺少M(fèi)SVisualC++ 2015動(dòng)態(tài)庫
打開程序,報(bào)錯(cuò)提示:無法定位程序輸入點(diǎn)ucrtbase.terminate
于動(dòng)態(tài)鏈接庫api-ms-win-crt-runtime-l1-1-0.dll
上,如圖所示:
解決方案:安裝:Visual C++ Redistributable for Visual Studio 2015
注:下載對應(yīng)版本安裝
微軟官網(wǎng):https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145
安裝后重啟下電腦
若還不行,嘗試安裝下這個(gè)補(bǔ)?。篕B2999226
微軟官網(wǎng):https://www.microsoft.com/en-us/download/details.aspx?id=49093
總結(jié)
以上所述是小編給大家介紹的使用PyInstaller將Pygame庫編寫的小游戲程序打包為exe文件,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
pymongo如何通過oplog獲取數(shù)據(jù)(mongodb)
使用MongoDB的oplog(操作日志)進(jìn)行數(shù)據(jù)同步是高級的用法,主要用于復(fù)制和故障恢復(fù),這篇文章主要介紹了pymongo通過oplog獲取數(shù)據(jù)(mongodb),需要的朋友可以參考下2023-09-09Python多進(jìn)程multiprocessing.Pool類詳解
這篇文章主要為大家詳細(xì)介紹了Python多進(jìn)程multiprocessing.Pool類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04使用pandas計(jì)算環(huán)比和同比的方法實(shí)例
同比和環(huán)比都是為了顯示數(shù)據(jù)的變化速度,但是基數(shù)不同,同比側(cè)重長期數(shù)據(jù)趨勢變化,環(huán)比側(cè)重于短期內(nèi)數(shù)據(jù)趨勢變化,下面這篇文章主要給大家介紹了關(guān)于如何使用pandas計(jì)算環(huán)比和同比的相關(guān)資料,需要的朋友可以參考下2022-03-03Django ORM實(shí)現(xiàn)按天獲取數(shù)據(jù)去重求和例子
這篇文章主要介紹了Django ORM實(shí)現(xiàn)按天獲取數(shù)據(jù)去重求和例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python庫?Bokeh?數(shù)據(jù)可視化實(shí)用指南
大家好,今天跟大家分享的是交互式可視化神器?Python?Bokeh?的詳細(xì)使用教程,Bokeh是一個(gè)面向現(xiàn)代web瀏覽器的交互式可視化庫。它提供了多功能圖形的優(yōu)雅、簡潔的構(gòu)造,并在大型數(shù)據(jù)集或流式數(shù)據(jù)集上提供了高性能的交互性,接下來讓我們詳細(xì)看看吧2021-11-11Python實(shí)戰(zhàn)購物車項(xiàng)目的實(shí)現(xiàn)參考
今天小編就為大家分享一篇關(guān)于Python實(shí)戰(zhàn)購物車項(xiàng)目的實(shí)現(xiàn)參考,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02