溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python打包exe程序怎么避免出錯

發(fā)布時間:2021-06-28 15:31:00 來源:億速云 閱讀:350 作者:chen 欄目:編程語言

這篇文章主要講解了“Python打包exe程序怎么避免出錯”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Python打包exe程序怎么避免出錯”吧!

寫完一個python程序之后,如何才能快速地將代碼分享給別人,尤其對于初學(xué)者來說,能把自己的代碼包裝成一個exe程序并傳遞到別人電腦上運(yùn)行,那是一件非常有成就感的事。好在python自帶簡易打包程序,讓很多人能過一把當(dāng)程序員的癮。目前流行的打包庫就有py2exe、pyinstaller和cx_Freeze。

但python的運(yùn)行環(huán)境復(fù)雜,編寫的程序往往是借助了很多附加的功能庫來實(shí)現(xiàn),對簡單的打包會造成一定困難。本人也是在經(jīng)歷了多次的打包失敗和成功的經(jīng)歷之后,覺得pyinstaller的成功率最高,所以有必要針對pyinstaller寫一篇避坑指南。

一、安裝

使用python的pip安裝,在cmd窗口,使用pip install pyinstaller,即安裝完成。然后配置好環(huán)境變量。

二、使用

例如在程序6.py所在文件夾打開cmd窗口。一般輸入pyintaller -F **.py(命令符的具體含義在下文中解釋),回車即開始打包。順利的話,會出現(xiàn)打包成功的反饋,如下圖,這時,就說明文件已經(jīng)打包完成了。dist文件夾里面就放著打包完的exe程序,使用時剪切出來就行了。如果運(yùn)氣好或者本身程序比較簡單,那這個exe就能在任何電腦運(yùn)行了。

Python打包exe程序怎么避免出錯

但往往沒這么容易,pyinstaller在使用中有很多坑,打包的開始,也是修補(bǔ)的開始。

三、遇坑填坑

1.文件路徑中不能出現(xiàn)中文

否則會在打包過程中直接出現(xiàn)如下報錯。這時只要把所在文件夾和程序名字改成英文或者數(shù)字重新打包即可。可以打包完再將exe的名字改回來。

Python打包exe程序怎么避免出錯

2.缺少導(dǎo)入hook文件

有時即使打包成功了,在運(yùn)行exe時候,還是會有報錯并閃退。

如果報錯為:FileNotFoundError: [Errno 2] No such file or directory:……

那是缺少hook文件,要在pyinstaller的安裝路徑里的hook增加一個自定義的hook。hook文件的命名規(guī)范為: hook-【庫名】.py。例如以我在打包程序中用了結(jié)巴分詞這個功能庫為例,那我要建立一個hook-jieba.py,并寫入:

from PyInstaller.utils.hooks import collect_data_files  datas = collect_data_files("jieba")

然后放到~\Lib\site-packages\PyInstaller\hooks中去,再次運(yùn)行pyinstaller打包既可解決該問題。

3.缺少導(dǎo)入功能庫模塊

如果報錯為 no moduler named “pandas._libs.skiplist”,那就要手動import庫,解決方法打開生成的spec文件,找到 hiddenimports=[],加上要添加的庫,將其改動如下,hiddenimports=["pandas._libs.skiplist"],然后刪除dist里面的exe文件,重新用spec文件打包,pyinstaller **.spec。即可解決該問題。

Python打包exe程序怎么避免出錯

四、花式打包

涉及到打包的幾個重要參數(shù)如下。

  •  -F,將所有內(nèi)容打包到一個exe中,方便發(fā)送,一般都使用這個參數(shù)。

  •  -c,此為windows系統(tǒng)的默認(rèn)選項(xiàng),使用這個參數(shù),運(yùn)行時會有一個黑窗控制臺。

  •  -w,使用這個參數(shù),運(yùn)行時不會出現(xiàn)黑窗控制臺。

  •  -i  使用這個參數(shù)用于生成自定義圖標(biāo)的exe,在這后面要加上ico圖片的地址。例如,pyinstaller -i D:\icons\demo.ico **.py

五、結(jié)語

將程序打包成exe發(fā)送出去或者供用戶下載,是一個比較傳統(tǒng)的傳播方式,并且比較笨重,其實(shí)用簡單的H5或者小程序就能實(shí)現(xiàn)一樣的效果,對用戶而言也更方便,也是朝著輕應(yīng)用的方向發(fā)展。此外,對于專業(yè)用戶還能通過github和api等方式傳播。隨著網(wǎng)絡(luò)觀念的深入人心和5G時代到來,相信有更好的方式能更安全、快捷、私密地將工具的功能傳遞給所需要的用戶。

感謝各位的閱讀,以上就是“Python打包exe程序怎么避免出錯”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Python打包exe程序怎么避免出錯這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI