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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pyinstaller打包

發布時間:2023/12/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pyinstaller打包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇的后續,使用pyinstaller打包的一些注意事項。

文件目錄

?

打包目標

生成一個資源可以替換、可以發布到別人電腦上的文件。

一些小小的注意事項

路徑問題

因為是一個涉及到資源處理文件操作的程序,所以資源文件和操作對象的路徑怎么寫就成了一個很關鍵的問題。

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

解決方法二:發布的是一個文件包,里面包含exe和資源文件、被操作文件,根據文件包中的架構編寫相對路徑。

欲采用方法二。

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

Pyinstaller的參數問題:

-F 和 -D:

-F 會把程序和所有依賴的庫打包成一個可執行文件,啟動較慢;-D會生成一個文件夾,里面有可執行文件和依賴的庫對應的文件,啟動較快。推薦使用-D,因為根據網上的某篇文章,使用-F路徑會更麻煩(Python打包exe遇到的坑,路徑不對,文件找不到,遞歸超過最大深度等_吃蘋果的程序猿的博客-CSDN博客

-i

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

-c 和 -w:

-c對應cmd,帶控制臺窗口。-w對應windows,一般用在自帶圖形界面GUI的程序上,或者不想太初控制臺窗口時。

如果代碼中有print語句但exe程序不帶控制臺窗口,可能會報錯。

控制臺閃退

程序運行完成后,控制臺會自己關閉。

應對方法一:引入time包,代碼末尾加

time.sleep()

應對方法二:代碼末尾加

input('請按任意鍵退出')

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

打包流程

首先下載安裝pyinstaller。

pip install pyinstaller

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

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

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

并不想把所有的依賴庫都打包進一個exe文件(這樣似乎不太好處理被調用/操作的外部文件),所以在-D和-F中選擇-D(這里可以不寫,因為默認選擇-D)。

欲設置圖標,選擇R-C.ico為圖標文件。

在cmd中輸入如下命令:

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

開始打包,時間較長。

完成后,出現Build、dist文件夾及spec文件。

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

之后,在dist中的main_4文件夾下找到main_4.exe文件,雙擊運行,發現沒有問題。

將dist文件移動到其他位置,其中的exe文件仍能正常運行。

Over!

其他問題

打包后體積過大

可能是引入的包過多,或者當前環境下下載的包過多。

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

解決方案二:創建虛擬環境,在其中之下必須的包,在虛擬環境下打包。

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

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。