Python打包成exe的方法

這篇文章主要介紹“Python打包成exe的方法”,在日常操作中,相信很多人在Python打包成exe的方法問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Python打包成exe的方法”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

創(chuàng)新互聯(lián)專注于容縣網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供容縣營(yíng)銷型網(wǎng)站建設(shè),容縣網(wǎng)站制作、容縣網(wǎng)頁(yè)設(shè)計(jì)、容縣網(wǎng)站官網(wǎng)定制、小程序設(shè)計(jì)服務(wù),打造容縣網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供容縣網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

目前比較常見(jiàn)的打包exe方法都是通過(guò)Pyinstaller來(lái)實(shí)現(xiàn)的,本文也將使用這種常規(guī)方法。如果對(duì)這塊已經(jīng)很熟悉的小伙伴,可以直接下滑到本文下半部分。

為什么要打包?

眾所周知,Python腳本不能在沒(méi)有安裝Python的機(jī)器上運(yùn)行。

那我們?nèi)绻麑懥艘粋€(gè)數(shù)據(jù)分析/自動(dòng)化辦公的小腳本,想分享給同事小姐姐使用,可她電腦又沒(méi)有裝Python。

這個(gè)時(shí)候如果將腳本打包成exe文件,微信發(fā)送給她,即使她的電腦上沒(méi)有安裝Python解釋器,這個(gè)exe程序也能在上面運(yùn)行。豈不美哉?

安裝Pyinstaller

首先我們要先安裝Pyinstaller,直接在cmd使用pip命令

pip install pyinstaller

如果網(wǎng)速太慢可以切換國(guó)內(nèi)源來(lái)加速,本文其他部分直接使用國(guó)內(nèi)源,不再重復(fù)注釋。

Python打包成exe的方法

pip install -i https://pypi.douban.com/simple/ pyinstaller #豆瓣源  pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller #清華源

Pyinstaller打包步驟

這里我們拿之前《Python自動(dòng)化辦公 | 同事要我?guī)兔ρa(bǔ)寫178份Word日?qǐng)?bào)!》這篇的python代碼,作為案例來(lái)演示。將其中腳本py_word.py,待處理的表格文件workbook.xlsx,以及準(zhǔn)備好的軟件圖標(biāo)圖片chengzi.ico放在了我電腦的F:\py_word目錄下(如果大家感興趣的話,可以在文末下載獲?。?/p>

Python打包成exe的方法

1、cmd切換到我們剛剛放文件的目錄

Python打包成exe的方法

2、執(zhí)行命令Pyinstaller -F -w -i chengzi.ico py_word.py,執(zhí)行過(guò)程特別漫長(zhǎng),就沒(méi)有錄制動(dòng)圖。

執(zhí)行完畢會(huì)發(fā)現(xiàn)當(dāng)前目錄多了幾個(gè)文件夾,打開其中名為dist的文件夾。

Python打包成exe的方法

已經(jīng)生成了一個(gè)名為py_word的exe應(yīng)用程序,并且圖標(biāo)也是我們?cè)O(shè)置的橙子圖案,看來(lái)已經(jīng)成功一半了。

要不運(yùn)行一下,試試能否正常生成word日?qǐng)?bào)?

Python打包成exe的方法

打包exe后執(zhí)行

成功運(yùn)行,可惜就是文件有點(diǎn)大(339M)

Python打包成exe的方法

Pyinstaller參數(shù)詳解

說(shuō)回剛剛執(zhí)行的命令

Pyinstaller -F -w -i chengzi.ico py_word.py

給大家解釋一下其中Pyinstaller的參數(shù),其中-F參數(shù)代表制作獨(dú)立的可執(zhí)行程序。

-w是指程序啟動(dòng)的時(shí)候不會(huì)打開命令行。如果不加-w的參數(shù),就會(huì)有黑洞洞的控制臺(tái)窗口出來(lái)。比如在剛才的腳本里我加一行print('Hello World!'),那么就不要放-w參數(shù)了,不然運(yùn)行會(huì)報(bào)錯(cuò),畢竟Hello World!需要在命令行里打印出來(lái)。此外,-w參數(shù)在GUI界面時(shí)非常有用。

最后的-i chengzi.ico就是指設(shè)置自己的圖標(biāo)圖案,因?yàn)槟J(rèn)打包圖片是下圖這樣的。這個(gè)參數(shù)也可以寫成--icon=chengzi.ico

Python打包成exe的方法

最后稍微總結(jié)一下:

Pyinstaller -F py_word.py 打包exe  Pyinstaller -F -w py_word.py 不帶控制臺(tái)的打包  Pyinstaller -F -w -i chengzi.ico py_word.py 打包指定exe圖標(biāo)打包

以上三個(gè)是比較常用的參數(shù),其他參數(shù)詳見(jiàn)下表

Python打包成exe的方法

Pyinstaller參數(shù)大全

ico圖片生成

自己做的軟件都喜歡放上自己的圖標(biāo),不過(guò)哪來(lái)那么多ico圖片呢?

一個(gè)是可以找專門的ico圖片網(wǎng)站,不過(guò)都很小眾,圖片庫(kù)也很小。

另一個(gè)是可以自己生成,這里就給大家分享一個(gè)網(wǎng)站,可以把其他格式圖片轉(zhuǎn)成ico格式:https://app.xunjiepdf.com/img2icon/

Python打包成exe的方法

ico圖片格式轉(zhuǎn)換

壓縮打包

好了,小伙伴們

來(lái)到了最激動(dòng)人心的時(shí)刻,剛剛生成的exe實(shí)在太大了,300多M的軟件程序想用微信傳一下都費(fèi)勁。

我也試過(guò)很多方法,比如:修改spec文件自定義打包、pipenv 虛擬環(huán)境、使用開源的upx壓縮等等,但是往往要么過(guò)程比較麻煩,要么成功率不高(壓縮成不成功全看臉)。

而我要分享的,是自己一直在用的,最簡(jiǎn)單且成功率極高的方法——conda創(chuàng)建虛擬環(huán)境。

Python打包成exe的方法

Python打包為什么大?

在壓縮打包之前,先簡(jiǎn)單說(shuō)一下為什么Python打包過(guò)大?

Python打包exe,不但體積大而且運(yùn)行奇慢。解釋型語(yǔ)言大都是這個(gè)樣子,只不過(guò)Python尤其突出。要解決大而慢,只能用編譯型語(yǔ)言,如C,C++,甚至VB都好很多,體積最小的是匯編。[1]

此外,還有知乎大佬說(shuō)是因?yàn)椤癆naconda里內(nèi)置了很多庫(kù),打包的時(shí)候打包了很多不必要的模塊進(jìn)去,要用純凈的Python來(lái)打包?!?/p>

所以我們可以模擬一個(gè)新環(huán)境,其中只安裝我們本次打包所必要的工具包即可。

那最適合的就是——虛擬環(huán)境了!

虛擬環(huán)境

Python創(chuàng)建虛擬環(huán)境的方法有很多,而我是個(gè)Anaconda忠實(shí)用戶,如果你跟我一樣,那就簡(jiǎn)單了。(大家也可以使用Virtualenv、Pipenv來(lái)設(shè)置虛擬環(huán)境,善用搜索,方法大同小異)

先記幾個(gè)命令,很簡(jiǎn)單

conda create -n 虛擬環(huán)境名字 python==3.6  #創(chuàng)建虛擬環(huán)境  conda activate 虛擬環(huán)境名字  #激活虛擬環(huán)境  conda deactivate  #退出虛擬環(huán)境

從開始菜單運(yùn)行“Anaconda Prompt”,出現(xiàn)的界面輸入創(chuàng)建虛擬環(huán)境的指令。成功創(chuàng)建了一個(gè)名字為aotu,且基于python版本3.6的虛擬環(huán)境。

Python打包成exe的方法

在創(chuàng)建過(guò)程中需要回復(fù)(y/n),Yes,再激活虛擬環(huán)境

Python打包成exe的方法

conda安裝的虛擬環(huán)境,會(huì)把虛擬環(huán)境的目錄生成在anaconda安裝目錄下的env目錄下。

Python打包成exe的方法

當(dāng)然我們也可以在剛剛的窗口,使用命令conda info --envs,來(lái)查看conda環(huán)境下所有的虛擬環(huán)境

Python打包成exe的方法

安裝所需的庫(kù)

上面我們已經(jīng)創(chuàng)建并激活了名為aotu虛擬環(huán)境,輸入conda list可以查看當(dāng)前虛擬環(huán)境里已經(jīng)安裝的庫(kù)。

Python打包成exe的方法

我們打開所要打包的Python腳本,對(duì)比上圖,發(fā)現(xiàn)pandas,docx這兩個(gè)庫(kù)還需要額外安裝。當(dāng)然,也不能缺了打包必不可少的pyinstaller庫(kù)。

Python打包成exe的方法

待打包腳本

安裝庫(kù)的過(guò)程不再贅述

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas  pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-docx  pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller

安裝后再看

Python打包成exe的方法

已成功安裝,還有一些因?yàn)檫@幾個(gè)庫(kù)所附帶安裝的,就不管他們了。

Pyinstaller打包步驟

這里就不再重復(fù)了,只換個(gè)蘋果圖標(biāo)試試

Pyinstaller -F -w -i apple.ico py_word.py

Python打包成exe的方法

生成

Python打包成exe的方法

成功壓縮到29.8M,如果不導(dǎo)入pandas這位大神,應(yīng)該就可以10多M了

運(yùn)行一下,毫無(wú)問(wèn)題

Python打包成exe的方法

最后再簡(jiǎn)單總結(jié)一下虛擬環(huán)境+打包的全過(guò)程(只三步):

#創(chuàng)建虛擬環(huán)境  conda create -n aotu python=3.6  #激活虛擬環(huán)境  conda activate aotu  #Pyinstaller打包  Pyinstaller -F -w -i apple.ico py_word.py

總結(jié)一些小坑

1、說(shuō)起來(lái)還是有點(diǎn)玄學(xué),上文中一模一樣的過(guò)程我在兩個(gè)電腦都執(zhí)行過(guò)一遍。在其中一個(gè)上顯示缺少xlrd這個(gè)庫(kù),安裝后成功打包,也是一樣的大小。小伙伴們可以在文末獲取文件,也試試。

2、在安裝庫(kù)是要注意一些庫(kù)名,比如docx這個(gè)庫(kù)不要pip install docx,而是需要

pip install python-docx

還有一些庫(kù)可能因?yàn)榘姹静煌瑢?dǎo)致不能使用,多碰碰壁就好了。

3、為了防止打包時(shí)候有些庫(kù)沒(méi)安裝好,可以先在虛擬環(huán)境中執(zhí)行一下Python腳本。運(yùn)行無(wú)誤的話再打包,比較保險(xiǎn)。

Python打包成exe的方法

4、最后,如果想要?jiǎng)h除虛擬環(huán)境的話,可執(zhí)行下方命令

conda remove -n aotu--all

5、打包為exe的話,版本盡量選擇python3.6+32位版本,因?yàn)閣in64位系統(tǒng)向下兼容32位程序,但是如果不考慮32位系統(tǒng)的話無(wú)所謂,直接python64位版本直接打包就可以,只是只能在win64位系統(tǒng)上跑。

到此,關(guān)于“Python打包成exe的方法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

網(wǎng)站欄目:Python打包成exe的方法
文章來(lái)源:http://muchs.cn/article42/ihcjec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、網(wǎng)站建設(shè)、域名注冊(cè)微信小程序、網(wǎng)頁(yè)設(shè)計(jì)公司、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)