Python AI小專案打包通關:Pyinstaller和Wix都用上了

2022-12-27 12:00:29

最近有個Python小專案要打個包,專案結構比較簡單

  • main.py(主檔案),
  • 以及model_050.hdf5 (在雲端訓練好的AI模型)

主函數裡參照了一些包,如下

 

 

 需要解決的問題:

  1. 將main.py和model_050.hdf5打包到一個exe檔案中,這樣模型不會容易被別人拷貝走
  2. 將這些依賴包cv2, PyQt5, tensorflow也全部打包進這個exe檔案,這樣脫離環境也能直接執行

 

Step1:

參考了文章:

這篇文章真是一盞明燈,沒有走一步多餘的彎路

Pyinstaller如何打包多個資原始檔(超詳細教學)

文章中的這個要替換一下,文章是用的中文引號,通過不了。換成下面的就ok
datas=[('res','.')],

親測可行:下面是我的專案結構

 

一通操作之後獲得了main.exe

 

 滿懷欣喜的一執行,報錯啦

ImportError: OpenCV loader: missing configuration file: [‘config.py‘]. 

也是正常,這麼多年經驗告訴我,一般都不可能一次性過的

 

Step2:

國外網站一通搜,沒搞定啊,後來找到一箇中國小哥的文章,搞定了

因為文章中有下面一句話,我知道了他已經踩過了同樣的坑

查閱了往上的方法大部分都說升級 pyinstaller 和 opencv 就可以解決:

可是我的庫都是最新版本的,根本沒得升級。找了很久終於找到了一個成功的解決方法:

ImportError: OpenCV loader: missing configuration file: [‘config.py‘]. 報錯解決

關鍵獲取cv2的地址:

 

 

 檔案中建議用下面這條命令生成exe,

pyinstaller main.py -F --paths="D:\ProgramData\Anaconda3\lib\site-packages\cv2"

可是我之前用的方式是生成了main.spec組態檔的方式啊,上面的命令感覺不適合我

機智如我,那我到main.spec裡看看唄

 

找到了pathex, 一看就是設定額外掃描地址的

果斷把cv2的位置放了進去

 

 

pyinstaller main.spec重新生成exe。

嘿嘿~~ 工作了!

 

 

Step3:

打包成一個一鍵安裝的程式,第一感覺就想到了Wix,然後找到了兩篇文章

把Python程式碼打包成電腦軟體和手機App

[Wix] 安裝部署——起步

想著程式是用pyinstaller打包成exe的要麼還是用第一篇文章中描述的方式先試試

稍微試了一下,後來發現文章中要下載Git,然後例子是打包的.py檔案,和我生成的exe有點區別

果斷放棄,有點費時。

那麼開始使用第二種方式,因為剛好visual studio 2017本來我就有裝

建立了一個setup project for wix v3

開啟上面的Product.wxs 設定了安裝目錄,以及exe參照地址,還有需要的桌面快捷方式

 

build之後,生成了msi安裝包和一個.cab檔案

 

 

 雙擊.cab檔案之後發現,原來之前的exe藏在這裡面了

 

雙擊msi一鍵安裝之後,發現3件套全了,桌面快捷方式,程式位置,以及windows安裝程式列表

 

 

Step4:

深吸一口氣, 雙擊AIDetect快捷方式,在萬籟俱靜中等待程式執行,成功!!!

 

 

 可謂是:踏破鐵鞋無覓處 得來全不費功夫~~ (為什麼會突然想到這句,奇怪了...... 好像和主題無關嘛)