日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pyinstaller打包

發(fā)布時(shí)間:2023/12/18 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pyinstaller打包 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

上一篇的后續(xù),使用pyinstaller打包的一些注意事項(xiàng)。

文件目錄

?

打包目標(biāo)

生成一個(gè)資源可以替換、可以發(fā)布到別人電腦上的文件。

一些小小的注意事項(xiàng)

路徑問題

因?yàn)槭且粋€(gè)涉及到資源處理文件操作的程序,所以資源文件和操作對(duì)象的路徑怎么寫就成了一個(gè)很關(guān)鍵的問題。

解決方法一:使用絕對(duì)路徑。沒有問題,但不能移植到別人的電腦上。

解決方法二:發(fā)布的是一個(gè)文件包,里面包含exe和資源文件、被操作文件,根據(jù)文件包中的架構(gòu)編寫相對(duì)路徑。

欲采用方法二。

方法二比較簡單,只是類似于前端中,由于js文件(A)是在html文件(B)中被引入的,因此,在A中寫調(diào)用資源文件C時(shí),要注意調(diào)用的相對(duì)路徑要基于B而不是A。同理,只要代碼中的相對(duì)路徑都是基于打包后生成的exe文件就好了。

Pyinstaller的參數(shù)問題:

-F 和 -D:

-F 會(huì)把程序和所有依賴的庫打包成一個(gè)可執(zhí)行文件,啟動(dòng)較慢;-D會(huì)生成一個(gè)文件夾,里面有可執(zhí)行文件和依賴的庫對(duì)應(yīng)的文件,啟動(dòng)較快。推薦使用-D,因?yàn)楦鶕?jù)網(wǎng)上的某篇文章,使用-F路徑會(huì)更麻煩(Python打包exe遇到的坑,路徑不對(duì),文件找不到,遞歸超過最大深度等_吃蘋果的程序猿的博客-CSDN博客

-i

用于設(shè)置圖標(biāo)。被選為圖標(biāo)的圖像文件后綴名應(yīng)為ico(其實(shí)只要下載一張圖片,更改其后綴就好,這個(gè)方法對(duì)大多數(shù)格式都適用)。圖標(biāo)文件的相對(duì)路徑要基于打包時(shí)所處的目錄來寫,我一般把圖標(biāo)文件和要被打包的py文件放在一個(gè)目錄下,因此直接寫圖標(biāo)文件的名稱即可。

-c 和 -w:

-c對(duì)應(yīng)cmd,帶控制臺(tái)窗口。-w對(duì)應(yīng)windows,一般用在自帶圖形界面GUI的程序上,或者不想太初控制臺(tái)窗口時(shí)。

如果代碼中有print語句但exe程序不帶控制臺(tái)窗口,可能會(huì)報(bào)錯(cuò)。

控制臺(tái)閃退

程序運(yùn)行完成后,控制臺(tái)會(huì)自己關(guān)閉。

應(yīng)對(duì)方法一:引入time包,代碼末尾加

time.sleep()

應(yīng)對(duì)方法二:代碼末尾加

input('請(qǐng)按任意鍵退出')

我個(gè)人的理解是,input會(huì)等待一個(gè)鍵盤輸入,在鍵盤按鍵被按下前,程序不算執(zhí)行完,控制臺(tái)自然不會(huì)消失。(以上兩種方法摘自下面的博客Python打包exe遇到的坑,路徑不對(duì),文件找不到,遞歸超過最大深度等_吃蘋果的程序猿的博客-CSDN博客

打包流程

首先下載安裝pyinstaller。

pip install pyinstaller

安裝完成后,打開cmd,進(jìn)入要被打包的文件(本文是main_4)所在的目錄。

首先輸入D:進(jìn)入D盤(如果要進(jìn)入E盤則是E:),然后輸入cd+' '+文件所在路徑。

這個(gè)程序是帶圖形界面的,因此在-w和-c中選擇-w。

并不想把所有的依賴庫都打包進(jìn)一個(gè)exe文件(這樣似乎不太好處理被調(diào)用/操作的外部文件),所以在-D和-F中選擇-D(這里可以不寫,因?yàn)槟J(rèn)選擇-D)。

欲設(shè)置圖標(biāo),選擇R-C.ico為圖標(biāo)文件。

在cmd中輸入如下命令:

pyinstaller -w -i R-C.ico main_4.py

開始打包,時(shí)間較長。

完成后,出現(xiàn)Build、dist文件夾及spec文件。

打包完成后,根據(jù)之前在原始代碼中寫入的資源/被操作文件的路徑,把對(duì)應(yīng)文件放到對(duì)應(yīng)的位置(本文中為在dist目錄下新建source文件夾,并將對(duì)應(yīng)資源放入其中)。

之后,在dist中的main_4文件夾下找到main_4.exe文件,雙擊運(yùn)行,發(fā)現(xiàn)沒有問題。

將dist文件移動(dòng)到其他位置,其中的exe文件仍能正常運(yùn)行。

Over!

其他問題

打包后體積過大

可能是引入的包過多,或者當(dāng)前環(huán)境下下載的包過多。

解決方案一:減少引入,能from xxx import xxx,就不要import xxx。(本次然并卵了,用list代替了ndarray,沒有引入numpy,但包的大小基本一致……)

解決方案二:創(chuàng)建虛擬環(huán)境,在其中之下必須的包,在虛擬環(huán)境下打包。

不理解spec文件和Build文件夾的作用

理論上來講spec文件是用來配置各種路徑的。

總結(jié)

以上是生活随笔為你收集整理的Pyinstaller打包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。