pyinstaller 打包總結

2022-05-16 19:51:45 字數 3024 閱讀 9350

pyinstaller 打包過程總結

① 安裝 pyinstaller 打包工具

pip3 install pyinstaller
pyinstaller

打包命令不熟悉的小夥伴可點選這裡檢視喲

備註:以下涉及到的檔案名字main.py,請替換成自己的檔名

② 執行打包命令生成單獨的 .exe 程式

pyinstaller -f main.py
上述執行命令後,等待打包完成,將在當前目錄下生成 build 目錄和 list 目錄,找到 dist 目錄下生成的 main.exe 程式點選執行,但是頁面出現彈窗然後閃退(彈窗會一閃而過), falied to execute script main

③ 執行pyinstaller 提供的除錯打包命令,檢視打包錯誤日誌,通過日誌排查問題原因

pyinstaller -d main.py
-d 引數表示打除錯包,將展示生成的各種依賴檔案,等待打包結束,檢視 build/main/warn-main.txt 日誌警告檔案 ,分析日誌排查問題,日誌首部如下

④ 新增使用者依賴包

分析日誌發現缺失模組,現在通過命令列,把使用者第三方依賴模組搜尋路徑添(請使用自己電腦定義的安裝目錄)加進打包命令,(下面提供示例,site-packages可以不用新增的,即如果你沒有使用pip -target 安裝第三方模組到自己指定的目錄,這一步可以省略。有些ide工具會建立自己的安裝包路徑,所以請新增ide的安裝包的路徑)

pyinstaller -d -p d:\\python\\python38\\lib\\site-packages main.py
(yp小可愛記得這個地方新增的得是雙斜槓路徑字首)

如下圖,可以看到新增的路徑被新增到了main.spec檔案( .spec檔案為pyinstaller打包配置檔案)中去了

執行依舊報錯 。。。

⑤ 環境變數 frozen 注入到 sys

對於windows環境下打包,我們需要新增如下**到頂層檔案頭部第一行位置,某些庫對系統變數的載入存在bug,因此對系統變數進行手動載入設定(這一步取決於你使用的包)

import

sysimport

osif hasattr(sys, '

frozen'):

os.environ[

'path

'] = sys._meipass + "

;" + os.environ['

path

']

這段**和cx_freeze庫相關,在 windows 下,cx_freeze庫用於將程式打包成 exe,會將乙個變數 frozen 注入到 sys 中。

現在設定後重新打包,我們發現報錯,如下圖所示

⑥ 解決包相容問題

說是maplotlib 庫缺少資料檔案,matplotlib3.2以後就把mpl-data分離出去了,子目錄下的資料檔案會被移除,通過命令檢視我當前安裝的matplotlib版本

可以看到我當前使用版本為3.3.1,超過3.2,降低版本

pip3 uninstall matplotlib

pip3 install matplotlib==3.2.0

筆者本來想安裝3.1.1版本,結果3.1.1版本對系統要求安裝 c++ 執行庫, microsoft visual c++ 14.0 (其實就是microsoft visual c ++ 2015)

安裝執行庫太麻煩,筆者偷懶,選擇使用3.2.0版本

至此,筆者打包程式可以執行起來了,執行的時候,你發現會多乙個黑色彈窗(windows 的 dos 彈窗),我們通過加 -w 引數影藏它,即最終打包命令為

pyinstaller -f -w main.py
⑦ 使用 pipenv優化打包體積

1,安裝 pipenv 虛擬環境

pip install pipenv
2,啟用虛擬環境

pipenv shell
3,啟用後,本地將建立虛擬環境,然後在新虛擬環境安裝 pyinstaller 打包工具

pipenv install pyinstaller
4,接著在虛擬環境下安裝你自己專案的第三方依賴包檔案

5,然後執行你的打包步驟吧

打包優化前後體積對比,減少了約27.5m空間

⑧ 驗證exe程式執**況

1,功能驗證:驗證生成的 .exe 程式功能是否符合預期功能要求

2,依賴環境驗證:將 .exe 程式放置在不同的純淨的(純淨指的是不需要python等**執行環境依然能夠執行)windows電腦上執行,以驗證你的exe程式是否對外有依賴項

pyinstaller 打包步驟總結

1.安裝對應版本的pyinstaller 2.在打包之前,將需要import的庫從site package中copy出來放在要打包的同個檔案目錄下,有些庫有依賴庫,需要將依賴庫也一同copy到同個目錄下 3.開啟cmd,進入要打包的檔案目錄中執行 pyinstaller f myfile.py 4....

Pyinstaller 打包發布經驗總結

注 在 linux系統下使用pyinstaller生成的是linux的可執行檔案,在windows下生成的是exe檔案 pyinstaller基本使用方法 python專案的打包方法 1.spec檔案生成 2.spec檔案配置 3.使用spec執行打包命令 python模組的打包問題 凍結打包路徑 ...

pyinstaller打包程式

python打包成exe檔案時,用的是pyinstaller 第一步安裝pyinstaller pip install pyinstaller第二步 pyinstaller f w i ico py其中 ico 是logo,py是你要打包的py檔案 我在打包時出現了struct.error unpa...