最近有個Python小專案要打個包,專案結構比較簡單
- main.py(主檔案),
- 以及model_050.hdf5 (在雲端訓練好的AI模型)
主函式里引用了一些包,如下
需要解決的問題:
- 將main.py和model_050.hdf5打包到一個exe檔案中,這樣模型不會容易被別人複製走
- 將這些依賴包cv2, PyQt5, tensorflow也全部打包進這個exe檔案,這樣脫離環境也能直接執行
Step1:
參考了文章:
這篇文章真是一盞明燈,沒有走一步多餘的彎路
文章中的這個要替換一下,文章是用的中文引號,透過不了。換成下面的就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,然後找到了兩篇文章
想著程式是用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快捷方式,在萬籟俱靜中等待程式執行,成功!!!
可謂是:踏破鐵鞋無覓處 得來全不費功夫~~ (為什麼會突然想到這句,奇怪了...... 好像和主題無關嘛)