pyinstaller打包可執(zhí)行程序過程中的常見錯誤解決
pyinstaller作為一個優(yōu)秀的三方庫,可以將你的程序打包成為windows可執(zhí)行文件(exe),下面對使用過程中可能會出現(xiàn)的問題進行解答:
1、打包流程
pyinstaller的打包流程主要可以分成兩部分:
1.1、生成配置文件(xx.spec)
首先在你的電腦上裝好pyinstaller程序庫,通過pip安裝即可,然后進入你想打包程序所在的路徑,
例如你想打包pickme.py,使用如下命令生成配置文件:
pyi-makespec pickme.py
然后你就可以在pickme.py的同級目錄中查看到pickme.spec的文件,該文件是你打包pickme.py文件的配置文件,里面包含打包相關(guān)的所有配置。
1.2、生成可執(zhí)行文件(xx.exe)
1.1執(zhí)行過后,使用如下命令:
pyinstaller pickme.spec
該命令即可將你運行pickme.py文件所需的環(huán)境全部進行打包,這塊切記:打包過程中生成build與dist文件夾,dist文件夾包含你所打包程序的一個文件夾,里面包含程序運行依賴(相當于對你環(huán)境的備份,確保移植到?jīng)]有環(huán)境的電腦上依然可以使用),例如我的dist文件夾目錄如下:

圖1 dist文件目錄??????
圖1為我進行打包時的示例,我的dist文件夾包含baseline_model_run_new文件夾(是由于我打包的程序名字是baseline_model_run_new.py,具體文件夾名字跟你們打包的程序名字一致),打開baseline_model_run_new文件夾即為圖1所示,由圖1可知,其中包含了紅色框框的exe文件及許許多多依賴文件,這種才是正確的,如果你的dist文件夾中僅有exe文件,那么別人是沒辦法運行你的exe文件,因為沒有打包環(huán)境,請按照1.1與1.2重新操作。
2、打包程序需要讀取外部數(shù)據(jù)(額外讀取數(shù)據(jù))
在深度學(xué)習(xí)或者機器學(xué)習(xí)過程中避免不了會涉及讀取額外的數(shù)據(jù),那么這塊配置不好就會導(dǎo)致別人運行你的exe文件時出現(xiàn)圖2的效果:

圖2 exe文件數(shù)據(jù)錯誤
圖2中展示的是程序需要讀取額外數(shù)據(jù)的錯誤,程序在本地運行沒有任何問題,但一打包后問題頻出,各種找不到文件,這種問題主要是因為數(shù)據(jù)路徑以及配置的問題,直接上代碼說明。
block_cipher = None
a = Analysis(['baseline_model_run_new.py'], ### 名稱不同
pathex=[],
binaries=[],
datas=[('train_data.txt','.'), ('model.pth', '.')], ### 內(nèi)容不同
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)上述代碼是spec文件中的部分內(nèi)容,第二行被打包的文件名稱根據(jù)你們所打包的py文件會自動生成,不同的是第五行的datas列表,默認它是一個空列表,需要什么文件得自己添加進去,例如我的程序讀取train_data.txt文件,存放位置是:py文件與txt文件同級目錄存放,那么寫法如上,同時可能還需要深度學(xué)習(xí)的模型文件,同理可得。
然后保存spec文件,執(zhí)行如下命令:
pyinstaller pickme.spec
重新編譯spec文件,即可打包,打包完成的一定與圖1相似,一定要包含相關(guān)環(huán)境!?。?/p>
3、他人運行閃退的問題
你信心滿滿的把打包后的文件發(fā)給同學(xué)時,他一打開就閃退,而你也設(shè)置了input這些,這是為什么呢?這塊是你可能只發(fā)了exe文件,而沒有相關(guān)環(huán)境,此時把dist文件夾全部壓縮發(fā)給你的同學(xué),再讓他執(zhí)行exe文件即可,避免了閃退的問題 。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python3爬蟲使用Fidder實現(xiàn)APP爬取示例
這篇文章主要介紹了Python3爬蟲使用Fidder實現(xiàn)APP爬取示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11
使用Mac時psycopg2導(dǎo)入PyCharm失敗的解決
這篇文章主要介紹了使用Mac時psycopg2導(dǎo)入PyCharm失敗的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
在pycharm中創(chuàng)建django項目的示例代碼
這篇文章主要介紹了在pycharm中創(chuàng)建django項目的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
python+selenium實現(xiàn)QQ郵箱自動發(fā)送功能
這篇文章主要為大家詳細介紹了python+selenium實現(xiàn)QQ郵箱自動發(fā)送功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01
解決jupyter notebook import error但是命令提示符import正常的問題
這篇文章主要介紹了解決jupyter notebook import error但是命令提示符import正常的問題,具有很好的參考2020-04-04

